AVIから1フレームを取り込み、DirectDrawサーフェイスに描画するには


HH  2004-10-22 02:56:58  No: 54843

VC++6.0を使用しております。

AVIファイル(16ビット)からある1フレームを切り出し、
それをDirectDrawのサーフェイス(オフスクリーン)へ書き出したいのですが、
以下のところで躓いております。
ディスプレイの設定は32ビットTrueColorです。

void myLoadFrame(int iIndex,DWORD* lpData)
{
//iIndex・・・切り出すフレーム
//lpData・・・サーフェイスのポインタ(DDSURFACEDESC.lpSurface)
//(サーフェイスはすでに作成済)

/***(中略)***/
//AVIFileOpen、AVIFileGetStream、AVIStreamGetFrameOpen後、

DWORD* lpTmp = (DWORD*)AVIStreamGetFrame(pgfFrame, iIndex);
//lpTmpにiIndexフレーム目のBMPイメージを取得。

/*ここで、どうやってlpDataにlpTmp+sizeof(BITMAPINFOHEADER)を
コピーするべきか・・・*/

}

尚、取得したDIBの形式設定は以下の通りです。
  bmiFrame.biSize = sizeof(BITMAPINFOHEADER);
  bmiFrame.biPlanes = 1;
  bmiFrame.biBitCount = 16;
  bmiFrame.biWidth = giWidth; //別関数にて取得済
  bmiFrame.biHeight = giAviHeight;//別関数にて取得済

BITMAPイメージとサーフェイスの並びは、上下が逆になる、
というのをとりあえず無視しつつ、
自分なりに色々とやってみてはいるのですが、
どれも正解には遠く及ばないようでした。

説明不足な感は重々承知しておりますが、
解決の糸口となるヒントや情報等ありましたら
お知恵をお貸し下さると助かります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加