static HRESULT ReadAAFFile(aafWChar* pFileName) { IAAFFile* pFile = NULL; IAAFHeader* pHeader = NULL; IAAFDictionary* pDictionary = NULL; IEnumAAFContainerDefs *pPlug = NULL; IAAFContainerDef *pPlugDef = NULL; IAAFDefObject *pDef = NULL; bool bFileOpen = false; aafBool testBool; aafUID_t readUID; HRESULT hr = S_OK; try { // Open the AAF file checkResult(AAFFileOpenExistingRead(pFileName, 0, &pFile)); bFileOpen = true; // Get the AAF file header. checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pDictionary->GetContainerDefs(&pPlug)); while(pPlug->NextOne (&pPlugDef) == AAFRESULT_SUCCESS) { checkResult(pPlugDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetAUID(&readUID)); if(memcmp(&readUID, &testUID, sizeof(aafUID_t)) == 0) { checkResult(pPlugDef->EssenceIsIdentified (&testBool)); checkExpression(testBool == kAAFTrue, AAFRESULT_TEST_FAILED); break; } pDef->Release(); pDef = NULL; pPlugDef->Release(); pPlugDef = NULL; } } catch (HRESULT& rResult) { hr = rResult; } // Cleanup and return if (pDef) pDef->Release(); if (pPlugDef) pPlugDef->Release(); if (pPlug) pPlug->Release(); if (pDictionary) pDictionary->Release(); if (pHeader) pHeader->Release(); if (pFile) { // Close file if (bFileOpen) pFile->Close(); pFile->Release(); } return hr; }
static HRESULT ReadAAFFile(aafWChar* pFileName) { IAAFFile* pFile = NULL; IAAFHeader* pHeader = NULL; IAAFDictionary* pDictionary = NULL; IEnumAAFContainerDefs *pPlug = NULL; IAAFDefObject* pDef = NULL; IAAFContainerDef* pContainerDef = NULL; bool bFileOpen = false; HRESULT hr = S_OK; aafUID_t readUID; wchar_t testString[256]; try { // Open the AAF file checkResult(AAFFileOpenExistingRead(pFileName, 0, &pFile)); bFileOpen = true; // Get the AAF file header. checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pDictionary->GetContainerDefs(&pPlug)); while(pPlug->NextOne (&pContainerDef) == AAFRESULT_SUCCESS) { checkResult(pContainerDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetAUID(&readUID)); if(memcmp(&readUID, &testUID, sizeof(aafUID_t)) == 0) { checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName) == 0, AAFRESULT_TEST_FAILED); aafUInt32 nameLen; checkResult (pDef->GetNameBufLen (&nameLen)); checkExpression (((wcslen (sName)+1) * sizeof (aafCharacter) == nameLen), AAFRESULT_TEST_FAILED); checkResult(pDef->GetDescription (testString, sizeof(testString))); checkExpression (wcscmp(testString, sDescription) == 0, AAFRESULT_TEST_FAILED); checkResult (pDef->GetDescriptionBufLen (&nameLen)); checkExpression (((wcslen (sDescription)+1) * sizeof (aafCharacter) == nameLen), AAFRESULT_TEST_FAILED); break; } pDef->Release(); pDef = NULL; pContainerDef->Release(); pContainerDef = NULL; }// checkResult(pPlug->NextOne(&pContainerDef)); } catch (HRESULT& rResult) { hr = rResult; } // Cleanup and return if (pHeader) pHeader->Release(); if (pPlug) pPlug->Release(); if (pDef) pDef->Release(); if (pContainerDef) pContainerDef->Release(); if (pDictionary) pDictionary->Release(); if (pFile) { // Close file if (bFileOpen) pFile->Close(); pFile->Release(); } return hr; }
static HRESULT ReadAAFFile(aafWChar* pFileName) { IAAFFile* pFile = NULL; IAAFHeader* pHeader = NULL; IAAFDictionary* pDictionary = NULL; IEnumAAFContainerDefs *pPlug = NULL; IEnumAAFContainerDefs *pClonePlug = NULL; IAAFDefObject* pDef = NULL; IAAFContainerDef* pContainerDef = NULL; IAAFContainerDef* pArray[2] = { NULL, NULL }; // IAAFContainerDef** pArrayDef = pArray; bool bFileOpen = false; HRESULT hr = S_OK; // wchar_t testString[256]; // aafUInt32 resultCount; try { // Open the AAF file checkResult(AAFFileOpenExistingRead(pFileName, 0, &pFile)); bFileOpen = true; // Get the AAF file header. checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pDictionary->GetContainerDefs(&pPlug)); /* Read and check the first element */ checkResult(pPlug->NextOne(&pContainerDef)); checkResult(pContainerDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); #if 0 //!!! Can't rely on order any more checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName1) == 0, AAFRESULT_TEST_FAILED); pContainerDef->Release(); pContainerDef = NULL; pDef->Release(); pDef = NULL; /* Read and check the second element */ checkResult(pPlug->NextOne(&pContainerDef)); checkResult(pContainerDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName2) == 0, AAFRESULT_TEST_FAILED); pContainerDef->Release(); pContainerDef = NULL; pDef->Release(); pDef = NULL; /* Reset, and check the first element again*/ checkResult(pPlug->Reset()); checkResult(pPlug->NextOne(&pContainerDef)); checkResult(pContainerDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName1) == 0, AAFRESULT_TEST_FAILED); pContainerDef->Release(); pContainerDef = NULL; pDef->Release(); pDef = NULL; /* Reset, Skip, and check the second element again*/ checkResult(pPlug->Reset()); checkResult(pPlug->Skip(1)); checkResult(pPlug->NextOne(&pContainerDef)); checkResult(pContainerDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName2) == 0, AAFRESULT_TEST_FAILED); pContainerDef->Release(); pContainerDef = NULL; pDef->Release(); pDef = NULL; /* Reset, and read both elements */ checkResult(pPlug->Reset()); checkResult(pPlug->Next (2, (IAAFContainerDef **)&pArray, &resultCount)); checkExpression (resultCount == 2, AAFRESULT_TEST_FAILED); checkResult(pArrayDef[0]->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName1) == 0, AAFRESULT_TEST_FAILED); pDef->Release(); pDef = NULL; checkResult(pArrayDef[1]->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName2) == 0, AAFRESULT_TEST_FAILED); pDef->Release(); pDef = NULL; /* Read one past to make sure that it fails */ checkExpression(pPlug->NextOne(&pContainerDef) != AAFRESULT_SUCCESS, AAFRESULT_TEST_FAILED); /* Clone the enumerator, and read one element */ checkResult(pPlug->Clone(&pClonePlug)); checkResult(pClonePlug->Reset()); checkResult(pClonePlug->NextOne(&pContainerDef)); checkResult(pContainerDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetName (testString, sizeof(testString))); checkExpression (wcscmp(testString, sName1) == 0, AAFRESULT_TEST_FAILED); pContainerDef->Release(); pContainerDef = NULL; pDef->Release(); pDef = NULL; #endif } catch (HRESULT& rResult) { hr = rResult; } // Cleanup and return if (pHeader) pHeader->Release(); if (pDictionary) pDictionary->Release(); if (pPlug) pPlug->Release(); if (pClonePlug) pClonePlug->Release(); if (pDef) pDef->Release(); if (pContainerDef) pContainerDef->Release(); if (pArray[0]) pArray[0]->Release(); if (pArray[1]) pArray[1]->Release(); if (pFile) { // Close file if (bFileOpen) pFile->Close(); pFile->Release(); } return hr; }