Latest post Fri, Nov 13 2015 10:49 AM by Francesco. 0 replies.
Page 1 of 1 (1 items)
Sort Posts: Previous Next
  • Fri, Nov 13 2015 10:49 AM

    • Francesco
    • Not Ranked
    • Joined on Wed, May 16 2012
    • Pisa - Italy
    • Posts 69
    • Points 680

    Media Volume Plugin question

    Hi To all

    in these days I am working on a MAC version of my plugin, and I am facing with media volume part of it. I found that my plugin doesn’t show clips in a mounted volume. In the console window when I mount a volume appears the messages:


     Link to AMA Volume -> /Volumes/ClipXVolume/

    MVP Used : [Plugin Name = MAV_MSP_myplugin version 1.0.0]


    and are correct; it means that my plugin is managing new volume.  After this a windows notify me that :

     “No clips found on /Volumes/ClipXVolume/“

    and the relative window is empty. It seems that the problem arises when myPluginMasterClips::GetMetadata(acfUInt32 index, IAAFFile** ppData)is called.  According to AMA SDK Developer’s Guide version 3.1 on page 12 is wrote:


    Most file-based devices used XML metadata files to describe their specific metadata and it is up to the MVP to extract that data. The AMASDK provides an XML parser that MVP plug-in component can use to assist in parsing. 

    Device specific metadata can be Described in any format other then XML, but the MVP is still responsible for extracting that data. 

    The AMA host only recognizes AAF metadata contained in an IAAFFile interface. The MVPs extracted metadata must be written in AAF and passed back to the AMA host. 

    So in the SampleCAmMetadataHandler metadata are read from xml file and an IAAFFile interface is created.  In my case I don’t use the xml file, but I read metadata directly from my clip file. So in the GetMetadata routine I changed the code in:

    ACFRESULT ACFMETHODCALLTYPE BLTAPluginMasterClips::GetMetadata(acfUInt32 index, IAAFFile** ppData)




    ACFRESULT result = ACF_OK;


    // validate the params

    if (ppData == NULL)

    return ACF_E_INVALIDARG;


    if (index >= Count())

    return ACF_E_OUT_OF_RANGE;


    // set the return address to NULL for now

    *ppData = NULL;


    // ACFPtr<UTIL::IACFXmlSaxParser> pParser;  => I Don’t need

    IAAFFile* pFile = NULL;



    // get the new parser

    // GetSaxParser(&pParser);  => I Don’t need


    // get the AAF metadata

    ACFPtr<IMetadata> pMetadata;

    acfcheck(_pIACFDocumentHandler->QueryInterface(IID_IMetadata, (void**)&pMetadata));


    // set the volume


    BLTAPluginMetadataHandler* pHandler = dynamic_cast<BLTAPluginMetadataHandler*>(pMetadata.inArg());



    // parse the SampleCam metadata

    // acfcheck(pParser->Start(kACFFalse, _MCList[index].InArg()));  => I Don’t need


    pFile = pMetadata->GetMetadata();



    catch(ACFRESULT err)


    result = err;

                      syslog(LOG_ERR, "ERROR in BLTAPluginMasterClips::GetMetadata for index %d",index);




    result = ACF_E_UNEXPECTED;



    *ppData = pFile;


                      syslog(LOG_ERR, "WARNING : file is null");

    return result;





    that is I didn’t use the xmlSaxParser.   But the result is as explained above.  The pFile variable is null.  The method myPluginMediaVolume::GetPartnerMSPGUID is called so extracting metadata should be done by myPluginContainer interface. How can I debug ? It seems that I’m missing something. Due to the fact that GetPartnerMSPGUID is called, and the UUID of myPluginContainer interface is passed, MC should call myPluginContainer interface in order to create the IAAFFile. Correct ?  But I don't see a call to my function NewAAFFrommyFile. Why MC didn't use the read myPluginContainer interface  ?




Page 1 of 1 (1 items)

© Copyright 2011 Avid Technology, Inc.  Terms of Use |  Privacy Policy |  Site Map |  Find a Reseller