Date

DVビデオエンコーダフィルタとDVビデオデコーダフィルタに備わっている、DV関連のインターフェイスを眺めてみよう。エンコーダとデコーダの設定を変更できる。

ダイナミックレンジを変更する(エンコーダ・デコーダ共通)

DVビデオフォーマットは、RGBに換算して16以上235以下のダイナミックレンジを持っている。PC上で再生すると、これを0以上255以下に拡張する。

しかし正しいレンジでデコードしてほしいときは、これでは不都合だ。IDVRGB219::SetRGB219を使うと、これを解決できる。

1
2
3
4
5
IDVRGB219 *pDVRGB=NULL;
pDecoder->QueryInterface(IID_IDVRGB219,(void**)&pDVRGB);
// RGB-219モードを有効
pDVRGB->SetRGB(TRUE);
SAFE_RELEASE(pDVRGB);

DVビデオのデコード解像度を変更する

NTSCのDVSD解像度は横720縦480だが、プレビュー程度の画面を取得できれば良いのであれば解像度を半分にしてデコードできる。これによりデコード処理の負荷が軽くなる。

それにはIIPDVDecインターフェイスを使う。

1
2
3
4
IIPDVDec *pDD=NULL;
pDecoder->QueryInterface(IID_IIPDVDec,(void**)&pDD);
pDD->put_IPDisplay(DVDECODERRESOLUTION_360x240);
SAFE_RELEASE(pDD);

DVビデオのエンコード設定を変更する

一方、エンコードの設定は、IDVEncインターフェイスを使う。

IDVEnc::put_IFormatResolutionを呼び出すと、エンコーディングの設定が変えられる。

解像度、1秒あたりのフレーム数(fps)などが規格として定められているので、このインターフェイスを呼び出すことは少ないだろう。たとえばNTSC形式で記録されたDVストリームをデコードして、PAL形式でAVIファイルに書きだす…といったときに使えるだろう。

1
2
3
pEnc->put_IFormatResolution(DVENCODERVIDEOFORMAT_NTSC,
                      DVENCODERFORMAT_DVSD,DVENCODERRESOLUTION_720x480,
                      FALSE, NULL);

Comments

comments powered by Disqus