DirectShowと戦うスレ ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
470:デフォルトの名無しさん 07/04/25 19:37:18 deliver で送るプッシュ型のピンですよね。 2つある場合はそれぞれ別のスレッドで動く必要がありますが、 そのあたりは問題ありませんか? 471:467 07/04/25 20:27:13 >>470 deliverは使ってませんが、内容は一緒です。 プッシュ型です。 具体的にはフィルタのReceiveでは、下記のようにしてます。 if(m_bOutputSampleAudio) { // オーディオならオーディオピンから出力 if(m_pOutput->IsConnected()) return m_pOutput->m_pInputPin->Receive(pSample); } else { // ビデオならビデオピンから出力する if(m_pOutputVideo->IsConnected()) return m_pOutputVideo->m_pInputPin->Receive(pSample); } 1つのスレッドで動かしているような気がします。 スレッドを別々に持つとは、オーディオピンがストップしたとしても、 ビデオピンは関係なく出力できる、みたいな感じですよね。 どう実装すればいいのか… 472:デフォルトの名無しさん 07/04/25 21:15:13 ビデオレンダラにつながっているピンのReceiveが時間調整のためにブロックすると、 オーディオレンダラにつながっているピンにもデータが来なくなるので、 時間が進まなくなって永遠にブロックするという動作。 出力ピンをCSourceStream から派生させて実装するのが base classes 的には常道。 パースしたビデオ、オーディオのデータをそれぞれのピンの中の Queue (自分で作ること) に入れておいて、FillBuffer で Queue にあるデータをもとにメディアサンプルを作る。 個人的にはスプリッタを作るなら、ソースフィルタのサンプルコードをもとにして 出力ピンと入力ピンを追加するのが簡単だと思う。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4289日前に更新/216 KB
担当:undef