07/03/10 17:49:27
スレリンク(tech板)
の658です。
たぶんこっちで質問したほうがいい気がしたので。
何度やっても同じところ(CopyMemory)で落ちます。
原因として思い当たる件があったらご教示願います。
269:デフォルトの名無しさん
07/03/10 18:11:41
サイズチェックくらいしろ。
24bit以上のソースなら、BITMAPINFOHEADERだな。
270:268
07/03/10 18:21:52
>>269
つまり、サイズが足りないということでしょうか?
271:268
07/03/10 19:24:59
サンプルファイルを出力したところ、24bitであることは確認しました。
どこが悪いんでしょう?
272:デフォルトの名無しさん
07/03/10 19:32:55
>>268
これか、
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader),
sizeof(BITMAPINFOHEADER));
探すの面倒だから直リンして欲しいな。
スレリンク(tech板:658番)
コピー先と、コピーするサイズとか確認してみれば。
&BitmapInfo.bmiHeader が有効なメモリを指してる?
&(pVideoHeader->bmiHeader) が有効なメモリを指してる?
sizeof(BITMAPINFOHEADER) これはあっていると思うけどさ。
273:268
07/03/10 19:37:59
&BitmapInfo.bmiHeader:1000E380
&(pVideoHeader->bmiHeader):30
むう?
274:268
07/03/10 19:41:33
Bitmapinfoをローカルにすると
&BitmapInfo.bmiHeader:12F044
&(pVideoHeader->bmiHeader):30
&BitmapInfo.bmiHeaderが怪しいですね。
275:268
07/03/10 19:42:42
で、怪しいのはわかったんですが対処方法がわかりませんorz
276:デフォルトの名無しさん
07/03/10 19:49:11
何かおかしいときはリビルドすると直ったりするんだよ
277:デフォルトの名無しさん
07/03/10 19:50:18
ヘッダに書いただけで動かなくなるとは思えないしさ!
278:デフォルトの名無しさん
07/03/10 19:51:15
>>276
もう8回くらいリビルドしてますorz
手動でbmiHeaderを初期化したりしてもダメでした。
279:デフォルトの名無しさん
07/03/10 20:06:49
初心者スレに戻りなはれ
280:268
07/03/10 20:09:10
そうします。orz
281:265
07/03/10 23:31:42
>>266
その方法を試すために、まず出力ピンのメディアタイプを取得しようとしたのですが、
原因不明のエラーが出ます。
何がまずいのでしょうか?
HRESULT (作成した変換フィルタクラス名)::Transform( IMediaSample *pIn , IMediaSample *pOut ){
・・・
//出力ピンのメディアタイプを探す
IEnumPins *pEnumPins;
IPin *pPin;
PIN_DIRECTION PinDirThis;
AM_MEDIA_TYPE *pmt;
this->EnumPins( &pEnumPins );
pEnumPins->Reset();
while( pEnumPins->Next( 1 , &pPin , NULL ) == S_OK ){
pPin->QueryDirection( &PinDirThis );
if ( PinDirThis == PINDIR_OUTPUT ){
pPin->ConnectionMediaType( pmt ); ←定義されてないのに使ってるというようなエラー
}
}
DeleteMediaType( pmt ); ←上と同じエラー
・・・
}