ニコニコ動画管理ソフトを作るぞー[2]

ダウンロードした動画(flv・mp4)から、フレームを抽出するプログラムを作成した際に、私が作成したコードだと、flvからフレームを抽出できない件、
デバックしてみたら、原因がわかりました。

こんな感じでフレームを抽出して、保存していたのですが、


1、IGraphBuilderからIMediaEventインターフェースを取得
2、SampleGrabberのGetConnectedMediaType関数で
  メディアタイプ(AM_MEDIA_TYPE構造体)を取得
3、フレームを入れるバッファを確保(new)する。
  バッファのサイズは、
  AM_MEDIA_TYPE構造体のlSampleSizeを参照
4、ビットマップインフォヘッダー(VIDEOINFOHEADER構造体
  を取得(AM_MEDIA_TYPE構造体のpbFormatに入っている。)
5、SampleGrabberのGetCurrentBufferでバッファを取得する。
6、ビットマップ保存関係ごにょごにょ


□原因発見
3、のバッファサイズ(=lSampleSize)の値が、テストで使用したflvだと1になっていました。
 → 原因は不明、特殊な画像だった?
そのため、SampleGrabberのGetCurrentBufferを、バッファをNULLにして実行すると、バッファサイズを取得できるので、これを使用してバッファサイズを取得する方法に変更しました。

m_pSampleGrabber->GetCurrentBuffer(&nBufferSize,
NULL);
    → nBufferSizeにバッファサイズが入ります。
      NULLのところにバッファを入れておくと、ここにフレームがあります。

これで、MP4もflvもフレーム抽出が可能になりました。
おまけに、どのフレームでも抽出できるようになりました。
よっしゃー


ffdshow問題①
ffdshowを使って、デコードをしているため、
動画を開くたびに、タスクバーにffdshowのアイコンが増えていく現象が発生。
(活きているのはひとつだけっぽい)
ffdshowのVideo・Audioの設定の「トレイ、ダイアログ、パス」のトレイアイコン=なしに選択することで、ほぼアイコンを消せました。

ffdshow問題②
特定のMP4の動画を開くたびに、ffdshow関係のアイコンがタスクバーに増えていく現象が発生
これは全て活きているアイコンのようです。
(アイコンを右クリックすると、全てのアイコンでメニューが出ます。)
原因不明。
プログラムを終了すると、ffdshowも死ぬので、私のプログラムで解放ミスがあるんじゃないかな、とは思うものの、原因は不明。