Changeset 187


Ignore:
Timestamp:
Jun 28, 2013, 9:39:00 AM (11 years ago)
Author:
roman
Message:

Added IWMPropertyVault

Location:
trunk/Utilities/WindowsMediaCodecList
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Utilities/WindowsMediaCodecList/MainDialog.h

    r186 r187  
    494494                                                A(IWMStreamConfig3)
    495495                                                A(IWMVideoMediaProps)
     496                                                A(IWMPropertyVault)
    496497                                                #undef A
    497498                                        };
     
    750751                                                sText.AppendFormat(_T("  ") _T("Quality: %d") _T("\r\n"), nQuality);
    751752                                                sText.Append(_T("\r\n"));
     753                                        }
     754                                        _ATLCATCHALL()
     755                                        {
     756                                                _Z_EXCEPTION();
     757                                        }
     758                                #pragma endregion
     759                                #pragma region IWMPropertyVault
     760                                const CComQIPtr<IWMPropertyVault> pWmPropertyVault = m_pCodecFormatData->m_pWmStreamConfig;
     761                                if(pWmPropertyVault)
     762                                        _ATLTRY
     763                                        {
     764                                                DWORD nPropertyCount = 0;
     765                                                __C(pWmPropertyVault->GetPropertyCount(&nPropertyCount));
     766                                                CRoArrayT<CString> PropertyArray;
     767                                                for(DWORD nPropertyIndex = 0; nPropertyIndex < nPropertyCount; nPropertyIndex++)
     768                                                {
     769                                                        DWORD nNameLength = 0;
     770                                                        WMT_ATTR_DATATYPE nType;
     771                                                        DWORD nValueDataSize = 0;
     772                                                        pWmPropertyVault->GetPropertyByIndex(nPropertyIndex, NULL, &nNameLength, &nType, NULL, &nValueDataSize);
     773                                                        CTempBufferT<WCHAR> pszName(nNameLength + 1);
     774                                                        CTempBufferT<BYTE> pnValueData(nValueDataSize + 2);
     775                                                        __C(pWmPropertyVault->GetPropertyByIndex(nPropertyIndex, pszName, &nNameLength, &nType, pnValueData, &nValueDataSize));
     776                                                        CString sProperty;
     777                                                        BOOL bHandled = FALSE;
     778                                                        switch(nType)
     779                                                        {
     780                                                        case WMT_TYPE_DWORD:
     781                                                                if(nValueDataSize && !(nValueDataSize % sizeof (DWORD)))
     782                                                                {
     783                                                                        const DWORD* pnValues = (const DWORD*) (const BYTE*) pnValueData;
     784                                                                        const SIZE_T nValueCount = nValueDataSize / sizeof (DWORD);
     785                                                                        if(nValueCount == 1)
     786                                                                                sProperty = AtlFormatString(_T("%d 0x%02X"), pnValues[0], pnValues[0]);
     787                                                                        else
     788                                                                                sProperty = AtlFormatString(_T("0x%02X, ..."), pnValues[0]);
     789                                                                        bHandled = TRUE;
     790                                                                }
     791                                                                break;
     792                                                        case WMT_TYPE_STRING:
     793                                                                // TODO: ...
     794                                                                break;
     795                                                        case WMT_TYPE_BINARY:
     796                                                                // TODO: ...
     797                                                                break;
     798                                                        case WMT_TYPE_BOOL:
     799                                                                if(nValueDataSize && !(nValueDataSize % sizeof (BOOL)))
     800                                                                {
     801                                                                        const BOOL* pnValues = (const BOOL*) (const BYTE*) pnValueData;
     802                                                                        const SIZE_T nValueCount = nValueDataSize / sizeof (BOOL);
     803                                                                        if(nValueCount == 1)
     804                                                                                sProperty = AtlFormatString(_T("%d"), pnValues[0]);
     805                                                                        else
     806                                                                                sProperty = AtlFormatString(_T("%d, ..."), pnValues[0]);
     807                                                                        bHandled = TRUE;
     808                                                                }
     809                                                                break;
     810                                                        case WMT_TYPE_QWORD:
     811                                                                // TODO: ...
     812                                                                break;
     813                                                        case WMT_TYPE_WORD:
     814                                                                // TODO: ...
     815                                                                break;
     816                                                        case WMT_TYPE_GUID:
     817                                                                // TODO: ...
     818                                                                break;
     819                                                        }
     820                                                        if(!bHandled)
     821                                                                sProperty = _T("???");
     822                                                        sProperty += AtlFormatString(_T(" (Type %d, Size %d)"), nType, nValueDataSize);
     823                                                        _W(PropertyArray.Add(AtlFormatString(_T("%ls: %s"), (LPCWSTR) pszName, sProperty)) >= 0);
     824                                                }
     825                                                if(nPropertyCount)
     826                                                {
     827                                                        sText.Append(_T("IWMPropertyVault:\r\n"));
     828                                                        sText.AppendFormat(_T("  ") _T("PropertyCount: %d") _T("\r\n"), nPropertyCount);
     829                                                        for(SIZE_T nIndex = 0; nIndex < PropertyArray.GetCount(); nIndex++)
     830                                                                sText.AppendFormat(_T("    ") _T("%s") _T("\r\n"), PropertyArray[nIndex]);
     831                                                        sText.Append(_T("\r\n"));
     832                                                }
    752833                                        }
    753834                                        _ATLCATCHALL()
  • trunk/Utilities/WindowsMediaCodecList/WindowsMediaCodecList.rc

    r186 r187  
    122122
    123123VS_VERSION_INFO VERSIONINFO
    124  FILEVERSION  1, 0, 0, 223
     124 FILEVERSION  1, 0, 0, 228
    125125 PRODUCTVERSION 1,0,0,1
    126126 FILEFLAGSMASK 0x3fL
     
    141141            VALUE "Created By", "Roman Ryltsov <roman@alax.info>"
    142142            VALUE "FileDescription", "Windows Media Codec List Utility"
    143             VALUE "FileVersion",  "1, 0, 0, 223\0"
     143            VALUE "FileVersion",  "1, 0, 0, 228\0"
    144144            VALUE "InternalName", "WindowsMediaCodecList"
    145145            VALUE "LegalCopyright", "Copyright © Alax.Info, Roman Ryltsov, 2008-2013"
Note: See TracChangeset for help on using the changeset viewer.