楓の掲示板

タイトル Re: ムービー拡張 組み込み進捗状況
投稿日: 2004/11/29(Mon) 01:31
投稿者管理人

こんばんは。
IRCの方におじゃましたんですが、すでに寝てしまっていたようですので、こちらに思い付いたことを書かせていただきます。

まず、私のHPに置いてある、実行ファイルを使っても、同様の結果になりますか?

----------------------

問題の、
m_GraphBuilder->Connect( pIPinUpstream, pIPinDownstream)
で返ってきている、hr値はなんでしょう?
すぐ下の
#if _DEBUG 〜 #endif
で囲われた部分、
OutputDebugString( DShowException(hr).what() );
で、デバッガにエラー文字列か表示されると思うのですが。
いや、違うのか。
そのスプリッターが、そのように接続要求が来ることを想定していない(面倒だから例外にしてる?)ので、例外を出しているのか。
その接続前のグラフが見たいですね。
DLLをデバッグビルドすると、ROTに登録するようになるで、GraphEditから接続されているフィルタを見ることが出来ます。
GraphEditでFile -> Connect to remore Graphとしたら、ROT登録されている物の一覧が出る(たぶん、1つしか出ません)ので、そこで今回のものを選択してください。
ただし、この時にグラフが作られていて、プログラムが動作していないといけないはずですので、問題の接続前でopenが返るようにソースに変更を加える必要があります。なので、ちょっと面倒ですから、下に書いていることを先に確認してください。
ちなみにGraphEditは私の環境ではC:\DXSDK\bin\DXUtils\graphedt.exeです。

----------------------

スプリッターもCLSID_MPEG1Splitterで生成しているので、標準のが使われると思っていたのですが、違うのでしょうか? って、現に違うんですよね。
CLSID_MPEG1SplitterのクラスIDはどうなっているでしょうか?
私の環境では 336475d0-942a-11ce-a870-00aa002feab5 です。
CLSID_MPEG1Splitterはuuids.hにあると思います。
で、そのクラスIDをレジストリエディタで検索すると、私の環境ではMPEG-I Stream Splitterとなっています。
後、oleviewでAll Objectsを開いて、MPEG-I Stream Splitterを探し、Implementationタグを見ると、C:\WINNT\system32\quartz.dllとなっています。クラスIDは上述の物と同じです。
ここは、どうなっていますでしょうか?
oleviewはファイル名を指定して実行で、起動されると思います。(標準ではなかったかも・・・)
後、変にいじるとエクスプローラーとかがおかしくなって、直らなくなってしまいます。見るだけなら大丈夫なはずです。レジストリの時点で違っていれば、ここはどうでもいいです。

AVIファイルの時は自動でやっているので、環境によって使われるスプリッターが異なると思います。(AVIファイルはあまり気にしなくてもよさそうだったので)
しかし、レイヤー描画の結果を見ると、スプリッターやデコーダーとレンダーがうまくつながってなさそうですね。

----------------------

GraphEditで問題のファイルをFile -> Render Media File...で読み込ませた時、どのようなグラフが構築されますか?
"MainConcept MPEG Splitter"が使われてますか?

----------------------

いろいろとお願いを書いてしまいましたが、よろしくお願いします。
また明日、IRCの方へお伺いします。
それでは。


- 関連一覧ツリー (▼ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ   手動改行 強制改行 図表モード
参照先
reCAPTCHA
下に表示されている二つの英単語を、スペースで区切って入力してください。

暗証キー (英数字で8文字以内)

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 暗証キー