Running AAF 1.1.2-DR1 on a mac intel

Developers
eric_y
2007-04-23
2013-04-29
  • eric_y

    eric_y - 2007-04-23

    Hi all,

    I have built both the universal
       make AAFTARGET=Debug AAFPLATFORM=UniversalDarwin everything
    and the unleaded version
       make AAFTARGET=Debug everything

    on my macintel box running gcc ( i686-apple-darwin8-gcc-4.0.1 )
    and built/linked using Xcode 2.4.1  on OSX 10.1.9

    The program which used to work with previous releases of AAF now fails when trying to AAFLoadLibrary.
    The specific failure is an assert in OMSSStoredObjectFactory( encoding, signature, name, description
    in file OMSS_SSStoredObjectFactory.cpp around line 57 where the
       PRECONDITION("Valid signature", signature != nullOMUniqueObjectIdentification );
    is being called which is followed by a friendly EXEC_BAD_ACCESS

    From the debugger, it looks like signature is being passed in as a NULL AUID.  All of the fields are "0".

    The actual call is from ImplAAFFile.cpp around line 1676
    #if defined(OM_USE_SCHEMASOFT_SS)

        // The SchemaSoft precompiled library is only available on these platforms:
        // Microsoft, Mac OS X, Irix, Linux, and Solaris
        OMFile::registerFactory(AAFS512Encoding,
      ===>                        new OMSS_SSStoredObjectFactory(AAFS512Encoding,
                                                           Signature_SSBin_512,
                                                           L"AAF-S",
                                                           L"AAF SchemaSoft SS"));
        OMFile::registerFactory(AAFS4KEncoding,
                              new OMSS_SSStoredObjectFactory(AAFS4KEncoding,
                                                           Signature_SSBin_4K,
                                                           L"AAF-S4K",
                                                           L"AAF SchemaSoft 4K"));
    #endif

    Any help would be appreciated.
    I tried using debug versions of both the AAFUniversalDarwin and AAFi386DarwinSDK libs and include files
    - libcom-api.dylib
    -  aafext/libaafintp.dylib
    -  aafext/libaafpgapi.dylib
    -  libaaflib.a

    Do I have to put the libSSRW2C.dylib or libSSRW2C.a files anywhere special?
    Am I missing some make directive?
    Is there a problem with the macro substitutions in ImplAAFFile.cpp and AAFFileKinds.h that gets the empty AUID instead of kAAFFileKind_Aaf512Binary?

    ..Eric

     
    • eric_y

      eric_y - 2007-04-24

      I made a change to ImplAAFFile.cpp around line 1649 that seems to fix my problem
      // signatures from the point of view of the OM
      // the below indirection in AAFFileKinds.h was causing a null AUID - emy 4/24/2007
      // #define Signature_SSBin_512 ENCODING(kAAFSignature_Aaf512Binary) 
      #define Signature_SSBin_512 ENCODING(kAAFFileKind_Aaf512Binary)
      #define Signature_SSBin_4K ENCODING(kAAFSignature_Aaf4KBinary)
      #define Signature_XML ENCODING(kAAFSignature_AafXmlText)

      The problem seems to have happened because of the assignment indirection in AAFFileKinds.h
      ...
      // the enum to select the default implementation with 512 byte sectors
      const aafUID_t kAAFFileKind_Aaf512Binary =
      { 0x42464141, 0x000d, 0x4d4f, {0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0xff } };
      ...
      // the signature actually stored in all AAF SS (512) files
      // note this is not a properly-formed SMPTE label, but this is legacy
      const aafUID_t kAAFSignature_Aaf512Binary = kAAFFileKind_Aaf512Binary;
      ...

      I rebuilt the OM for both i386DarwinSDK and UniversalDarwin.   This gave me a new libcom-api.dylib
      I then rebuilt my user libraries and user apps.

      I was able to successfully import and export AAF files.  

      ..Eric

       

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks