chenlongzheのプロフィール

@chenlongzhe chenlongzhe
ありがとう数1
質問数0
回答数1
ベストアンサー数
1
ベストアンサー率
100%
お礼率
0%

  • 登録日2010/09/26
  • Windows7でDirectShowを使おうとしているのですが・・・

    Windows7でDirectShowを使おうとしているのですが・・・ こんにちは、今、プログラムのことで困っていまして、もしわかる方がいらっしゃったら教えていただきたいのですが・・・ 【解決したい問題】 WindowsXPで使っていたプログラムをWindows7で実行させた時、DirectShowの、IMixerPinConfigの生成に失敗する。 【詳細】 先日、新しいパソコン(Windows7)を買って、前のパソコン(WindowsXP)で使っていた、動画を再生するプログラムを、Windows7で使おうとしたのですが、プログラムが起動してすぐにエラーが出てしまい、使うことが出来ませんでした。 そのプログラムは、「VB.NET FrameWork 2.0」で作成したプログラムで、「DirectShow」を使ってDVDから動画を再生しているのですが、ソースをステップごとに追いかけて調べてみると、アスペクト比を変更して、動画の黒い帯(レターボックス)を取るために使用していた、「IMixerPinConfig」というオブジェクトの生成が失敗していました。 「IMixerPinConfig」の生成に使っているのは、「DvdGraphBuilder」というクラスの「GetDvdInterface」という関数で、引数に「IMixerPinConfigのGUID」と、「取得したオブジェクトの格納用の変数」を渡していて、正常に処理されていれば、戻り値で0が返ってくるところが、&H80004002という値が返ってきて、out側の結果は、Nothingで返ってきたため、恐らくそこが原因なのだろうという所はつきとめました。 そして、DirectShowのソースを見ていくと、残念ながら、関数の中身は見ることが出来ませんでしたが、「GetDvdInterface」では、GUIDから、オブジェクトの取得を行っているのではないかと推測したので、問題が発生している箇所の前後で、同じ処理を使って、「IDvdInfo」、「IDvdControl」、「IBasicAudio」等の取得も行ったのですが、こちらは正常に処理されました。 ただ、正常に処理されはしたのですが、ブレークを打って確認しても、それぞれのGUIDの値が、「IMixerPinConfig」も、正常に処理された「IDvdInfo」等の値も、両方Emptyという表示になっていたので、何がなんだかわからなくなりまして・・・ 恐らくGUIDの読み込みで失敗しているのか、GUIDが登録されていないかのどちらかだとは思ったのですが、調べる方法もよくわからず・・・ 代替案も色々試してみたのですが、思うような動作をしてくれず、八方ふさがりの状態になってしまったので、投稿させていただきました。 どうか、よろしくお願いいたします。