Date

フィルタを作成していると、CheckMediaTypeなどメディアタイプを調整するメソッドで、入力されてきたメディアタイプがどんなものか確認したいときがある。

それにはDisplayTypeを使う。

1
2
HRESULT MyFilterPin::CheckMediaType(const CMediaType *pmt) {
    DisplayType(_T("label"), pmt);

このメソッドはLOG_TRACEメッセージとして出力される。ロギングレベル2以上では、メジャータイプ、マイナータイプ、フォーマットタイプ、フォーマットブロックのデータを出力する。ロギングレベル5以上ではフォーマットブロックの詳細を出力する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
MyFilter.dll(tid 15e4)     1032 : label  M type MEDIATYPE_Audio  S type MEDIASUBTYPE_PCM
MyFilter.dll(tid 15e4)     1032 : Subtype description UNKNOWN
MyFilter.dll(tid 15e4)     1032 : Not temporally compressed
MyFilter.dll(tid 15e4)     1032 : Sample size 0
MyFilter.dll(tid 15e4)     1033 :      Format type FORMAT_WaveFormatEx
MyFilter.dll(tid 15e4)     1033 :      Subtype MEDIASUBTYPE_PCM
MyFilter.dll(tid 15e4)     1033 : wFormatTag 1
MyFilter.dll(tid 15e4)     1033 : nChannels 2
MyFilter.dll(tid 15e4)     1033 : nSamplesPerSec 48000
MyFilter.dll(tid 15e4)     1033 : nAvgBytesPerSec 192000
MyFilter.dll(tid 15e4)     1033 : nBlockAlign 4
MyFilter.dll(tid 15e4)     1034 : wBitsPerSample 16
MyFilter.dll(tid 15e4)     1034 : cbSize 0

LOG_TRACEはDirectShow基底クラスライブラリで定めているデバッグ出力の種類である。ロギングレベルはDbgSetModuleLevelで設定する。

1
DbgSetModuleLevel(LOG_LOG_TRACE, 5);

Comments

comments powered by Disqus