[過去ログ] Win32API質問箱 Build127 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
339
(1): 2022/08/16(火)01:19 ID:agNT7bMr(1/8) AAS
以下のコードが動かなくて困ってます。

pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);
AVIStreamGetFrameClose(pgfFrame); ←これを実行したら落ちる

AVIStreamGetFrameCloseを実行しなくても動くのですが、再度Openした時に少しずつメモリを食いつぶして行くので困ってます。
止まった時にVC++の実行ボタンを再度押すと、内部で使ってるDLLがアンロードされてその後は動くようになります。
そうなると何回でもOpen→Close出来る様になり、メモリも食いつぶしません。
どうしたらいいんでしょうか?
342: 2022/08/16(火)14:36 ID:agNT7bMr(2/8) AAS
>>341
詳しく書くとこうなってるんです。
AVIStreamGetFrameCloseだけ落ちるんで困ってます。
これを実行しなくても動くのですが、複数回Openするとどんどんメモリを食いつぶすので困ってます…

AVIFileOpen(&paviFile, FileName, OF_READ | OF_SHARE_DENY_NONE, NULL);
AVIFileGetStream(paviFile, &paviStream, streamtypeVIDEO, 0);
pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);

if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる
if(paviStream != NULL){ AVIStreamRelease(paviStream); }
if(paviFile != NULL){ AVIFileRelease(paviFile); }
345: 2022/08/16(火)15:28 ID:agNT7bMr(3/8) AAS
>>343-344
ありがとうございます。

>この間の処理に問題があるんじゃないかな
この間は何にもしてなくても落ちちゃうんですよね… なんでだろう?

DLLを自前でアンロードする事も視野に入れてもう少し試行錯誤してみます
347: 2022/08/16(火)15:59 ID:agNT7bMr(4/8) AAS
>>346
AVIFileInit()とAVIFileExit()
前に両方入れてみたんですが、入れても入れなくても何も変わらなかったんですよね…
あとでまた試してみます。
349: 2022/08/16(火)17:58 ID:agNT7bMr(5/8) AAS
>>348
あとでその部分だけまとめて再現できるか確かめてみます
351
(2): 2022/08/16(火)21:22 ID:agNT7bMr(6/8) AAS
>>350
原因がわかりました。
普通にやると問題なくて、ここにあるコーデックの.dllをリンクすると
AVIStreamGetFrameCloseが上手くいかないようでした。
外部リンク:sourceforge.net
このコーデックを使う必要があるのでどうにかならないでしょうかね。
352: 351 2022/08/16(火)21:27 ID:agNT7bMr(7/8) AAS
正確にはコーデックの.dllをリンクして
そのコーデックを使っているファイルを読み込むと
AVIStreamGetFrameCloseが失敗するということです。
.dllをリンクしててもそのコーデックを使ってないファイルであれば
AVIStreamGetFrameCloseが失敗する事はなかったです。
353: 351 2022/08/16(火)23:11 ID:agNT7bMr(8/8) AAS
古いバージョンにしてみたら直りました!
これで普通に動いてるのでこのまま動かしてみます。
みなさんありがとうございました。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.036s