3

ネットで何時間も検索した後、私はこれに対する解決策を見つけるのに非常に必死です. YV12およびYUY2カラーモデルを出力するDirectShowでOGG Theoraデコーダーを起動して実行しました。

ここで、この出力用の RGB ピクセル操作フィルターを作成し、それをビデオ レンダラーに処理したいと考えています。thisthisによると、それは本当に簡単で透過的であるべきですが、そうではありません。

たとえば、CheckInputType()このチェックで実装しました:

if( IsEqualGUID(*mtIn->Type(), MEDIATYPE_Video )
        && IsEqualGUID(*mtIn->Subtype(), MEDIASUBTYPE_RGB565 ) )
{
   return S_OK;
}

そして、Theora と私のデコーダーの間にその MSYUV を挿入し、私のために仕事をしてくれることを期待します (つまり、RGB に変換します)。問題は、(GraphEdit アプリケーションで) 毎回エラーが発生することです。そして、入力としてYV12であると100%確信しています(デバッガーでチェック)。私が考えることができる唯一の説明は、AVI デコンプレッサについての言及ですが、それに関するそれ以上の情報はありません。

  • この自動機能を利用するには、AVI コンテナを使用する必要があるということですか?
  • 奇妙なことに、たとえば WMV ビデオ (出力に YUV を含む) で機能しますが、この OGG デコーダーだけが問題を抱えています。では、おそらく、この OGG デコーダーが何を見逃しているのかが問題になるでしょうか?

MSYUV フィルターがカラー スペース コンバーターとして機能しないのは残念です。つまり、GraphEdit で表示して直接使用できます...

これに関するヒントをいただければ幸いです。最後の手段として、独自の YV12 -> RGB コンバーターをプログラミングします。

4

1 に答える 1

3

Directshow には、YUV から RGG への色空間コンバーターは組み込まれていません。WMV ファイルが機能する理由は、WMV デコーダー フィルターが、接続するフィルターの種類に応じて RGB または YUV データを吐き出すためです。

ここでできる最善の方法は、色空間変換フィルターを自分で作成するか、YUV データを取得した後に変換することです。

Fourcc.orgには、YUV から RGB への変換に関する優れた記事があります。また、Keith Jack による Video Demystifiedという本には、色空間の変換に関する詳細がすべて記載されています。

于 2009-08-07T01:57:53.750 に答える