MCPcopy Create free account
hub / github.com/derceg/explorerplusplus / GetMediaMetadata

Function GetMediaMetadata

Explorer++/Helper/Helper.cpp:644–705  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

642}
643
644HRESULT GetMediaMetadata(const TCHAR *szFileName,const TCHAR *szAttribute,BYTE **pszOutput)
645{
646 typedef HRESULT (WINAPI *WMCREATEEDITOR_PROC)(IWMMetadataEditor **);
647 WMCREATEEDITOR_PROC pWMCreateEditor = NULL;
648 HMODULE hWMVCore;
649 IWMMetadataEditor *pEditor = NULL;
650 IWMHeaderInfo *pWMHeaderInfo = NULL;
651 HRESULT hr = E_FAIL;
652
653 hWMVCore = LoadLibrary(_T("wmvcore.dll"));
654
655 if(hWMVCore != NULL)
656 {
657 pWMCreateEditor = (WMCREATEEDITOR_PROC)GetProcAddress(hWMVCore,"WMCreateEditor");
658
659 if(pWMCreateEditor != NULL)
660 {
661 hr = pWMCreateEditor(&pEditor);
662
663 if(SUCCEEDED(hr))
664 {
665 hr = pEditor->Open(szFileName);
666
667 if(SUCCEEDED(hr))
668 {
669 hr = pEditor->QueryInterface(IID_PPV_ARGS(&pWMHeaderInfo));
670
671 if(SUCCEEDED(hr))
672 {
673 WORD wStreamNum;
674 WMT_ATTR_DATATYPE type;
675 WORD cbLength;
676
677 /* Any stream. Should be zero for MP3 files. */
678 wStreamNum = 0;
679
680 hr = pWMHeaderInfo->GetAttributeByName(&wStreamNum,szAttribute,&type,NULL,&cbLength);
681
682 if(SUCCEEDED(hr))
683 {
684 *pszOutput = (BYTE *)malloc(cbLength);
685
686 if(*pszOutput != NULL)
687 {
688 hr = pWMHeaderInfo->GetAttributeByName(&wStreamNum,szAttribute,&type,
689 *pszOutput,&cbLength);
690 }
691 }
692
693 pWMHeaderInfo->Release();
694 }
695 }
696
697 pEditor->Release();
698 }
699 }
700
701 FreeLibrary(hWMVCore);

Callers 1

Calls 2

QueryInterfaceMethod · 0.45
ReleaseMethod · 0.45

Tested by

no test coverage detected