#include <stdio.h>//printf とかで必要 #include<windows.h>//MessageBox とかで必要 #include <wmsdk.h> #pragma comment(lib, "wmvcore.lib") void main(void) { printf("コンソール表示開始\n"); HRESULT GetCodecNames(IWMCodecInfo3* pCodecInfo); IWMCodecInfo3* pCodecInfo = NULL; IWMProfileManager* pProfileManager = NULL; HRESULT hr = S_FALSE; DWORD cCodecs = 0; hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); hr = WMCreateProfileManager(&pProfileManager); hr = pProfileManager->QueryInterface(IID_IWMCodecInfo3, (void**)(&pCodecInfo));\ //システム上でサポートされているオーディオコーデックの数を取得します。 hr = pCodecInfo->GetCodecInfoCount(WMMEDIATYPE_Audio, &cCodecs); if(SUCCEEDED(hr)) printf("オーディオコーデックの数: %d\n\n", cCodecs); else { printf("オーディオコーデックの数を取得できませんでした。\n"); return; } MessageBox(0,0,TEXT("OK"),0); }
コーデックの数が正しいか調べてみたがよく分からない。
Windows Media Player のヘルプ-バージョン情報-テクニカルサポート情報
でコーデックを確認してみた。
コーデック名の取得
参考:http://msdn.microsoft.com/ja-jp/library/windows/desktop/dd743771(v=vs.85).aspx
#include <stdio.h>//printf とかで必要 #include<windows.h>//MessageBox とかで必要 #include <wmsdk.h> #pragma comment(lib, "wmvcore.lib") void main(void) { printf("コンソール表示開始\n"); HRESULT GetCodecNames(IWMCodecInfo3* pCodecInfo); IWMCodecInfo3* pCodecInfo = NULL; IWMProfileManager* pProfileManager = NULL; HRESULT hr = S_FALSE; DWORD cCodecs = 0; WCHAR* pwszCodecName = NULL; DWORD cchCodecName = 0; hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); hr = WMCreateProfileManager(&pProfileManager); hr = pProfileManager->QueryInterface(IID_IWMCodecInfo3, (void**)(&pCodecInfo));\ //システム上でサポートされているオーディオコーデックの数を取得します。 hr = pCodecInfo->GetCodecInfoCount(WMMEDIATYPE_Audio, &cCodecs); if(SUCCEEDED(hr)) printf("オーディオコーデックの数: %d\n\n", cCodecs); else { printf("オーディオコーデックの数を取得できませんでした。\n"); return; } /* ----------- オーディオコーデックの名前を取得 ----------- */ //すべてのオーディオコーデックをループ。 for(DWORD dwCodecIndex = 0; dwCodecIndex < cCodecs; dwCodecIndex++) { //まず、名前のサイズを取得する。 hr = pCodecInfo->GetCodecName(WMMEDIATYPE_Audio, dwCodecIndex, NULL, &cchCodecName); if(FAILED(hr)) { printf("コーデック名のサイズを取得できませんでした。\n"); return; } //適切なサイズの文字列を割り当てます。 pwszCodecName = new WCHAR[cchCodecName]; if(pwszCodecName == NULL) { printf("メモリを割り当てられませんでした\n"); return; } // コーデック名を取得します。 hr = pCodecInfo->GetCodecName(WMMEDIATYPE_Audio,dwCodecIndex,pwszCodecName,&cchCodecName); if(FAILED(hr)) { delete[] pwszCodecName; printf("コーデック名を取得できませんでした。\n"); return; } // コーデック名を出力する。 printf("%d %S\n", dwCodecIndex, pwszCodecName); // 次の繰り返しのためにクリーンアップします。 delete[] pwszCodecName; pwszCodecName = NULL; cchCodecName = 0; } MessageBox(0,0,TEXT("OK"),0); }
よくわからないな・・・・・
0 件のコメント:
コメントを投稿