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イメージとサーフェイスの並びは、上下が逆になる、
というのをとりあえず無視しつつ、
自分なりに色々とやってみてはいるのですが、
どれも正解には遠く及ばないようでした。
説明不足な感は重々承知しておりますが、
解決の糸口となるヒントや情報等ありましたら
お知恵をお貸し下さると助かります。
ツイート | ![]() |