DirectShowと戦うスレ Part 2
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2006/11/08(水) 00:25:56http://pc8.2ch.net/test/read.cgi/tech/1026666092/
0830デフォルトの名無しさん
2007/12/04(火) 08:58:16827 のは
> // ムービーが終わるまでここから先へは進ませない
> g_Event2->WaitForCompletion(INFINITE,&g);
のせいでメインのメッセージループ止まってて描画命令飛んでないんじゃないのという
非常に的を射たエスパー回答だと思うぞ。
0831デフォルトの名無しさん
2007/12/14(金) 12:54:00USBで接続されたビデオキャプチャ IO-DATAのGV-MVP/RZ3の
アナログビデオ入力(RGB)にカメラをつないで、
まずは、画像をプレビューしようかと考えています。
参考にしようと思ったプログラム、
http://www.geekpage.jp/programming/directshow/list-capture-device-3.php
を、コンパイルすることはできたのですが、うまく動きませんでした。
(ライブラリのリンクはできました。)
デバイス選択のところで、製品名のRZ3は認識しているようなのですが、
HRESULTをチェックしていくと、
// Graphを生成する
pCaptureGraphBuilder2->RenderStream(&PIN_CATEGORY_PREVIEW,
NULL, pDeviceFilter, NULL, NULL);
のところだけ、S_OKでなく、VFW_E_CANNOT_CONNECTが返ってきました。
&PIN_CATEGORY_PREVIEWのところを、
&PIN_CATEGORY_CAPTURE や &PIN_CATEGORY_VIDEOPORT
に変えてもエラーをはいてしまいます。
周りに相談できる方が折らず、困っています。
どなたか、ご助言いただけませんでしょうか?
OSはXP home SP2に
Windows Server 2003 SP1 SDK
DirectX SDK 2007
Microsoft Visual C++ 2005で開発しています。
お手数かけますが、どうかよろしくお願いいたします。
0832デフォルトの名無しさん
2007/12/15(土) 01:53:41・GraphEditでの動作結果
・デバイスの情報
(デバイスマネージャの出力とか同じとこのサンプルプログラムとかインターフェース問い合わせるとか)
とかがあると答えやすいかも
0833831
2007/12/17(月) 15:38:32お手数かけまして申し訳ありません。ありがとうございます。
いくつかご指摘の点を実行してみましたので、
下記の通り、どうかよろしくお願いいたします。
少し前のサンプル結果としてmpgファイルの再生。
http://www.geekpage.jp/programming/directshow/renderfile.php
は成功しました。
デバイス情報を表示するサンプルからは、
FriendlyName : Python2 USB WDM Encoder RZ3
Description : Python2 USB WDM Encoder RZ3
DevicePath : \\?\usb#vid_04bb&pid_0519#6&25ee13b8&0&2#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
となりました。
graphedit使ってみたところ、
フィルターから
Python2 USB WDM Endoderが見つかりました。
入力は、RGB入力と(おそらくです。文字化けしていました)
Audio inが見つかっています。
出力は、Mpeg out,Audio Preview,Index,VBI,Video Previewが見つかりました。
このまま、video renderの入力にVideo Previewをつなげようとしたところ、
「接続に必要な中間フィルタの組み合わせが見つかりませんでした。
エラーコード、0x80040217」
が出力されました。Mpeg Outのほうを、直接つないだり、mpeg decoderなどにつないでも
同様に中間フィルタの組み合わせが見つかりませんでした。
との結果を得ました。
ここで、詰まってしまいました。
不勉強のために不十分かとは思いますが、どうかご教授いただければ幸いです。
0834デフォルトの名無しさん
2007/12/17(月) 21:18:27とりあえず、GraphEditでVideo Preview Pinのプロパティを見て、MEDIASUBTYPEと出力サイズを調べる。
そこが変じゃないのなら、Video RenderとしてVMR9やOverlayなども試してみる。
0835デフォルトの名無しさん
2007/12/25(火) 12:11:57音量の変更の仕方をどなたか知ってる方いらっしゃいませんか?
プロファイルを指定して解像度なりビットレートは変えられています。
PCの音量を最大にしても人が喋ってる声とかがあまり聞こえないんです。
ちなみにAviの方ははっきり聞こえています。
0836デフォルトの名無しさん
2007/12/31(月) 23:33:07「半透明で」「最上面」に映し出すためのプログラムを書こうと思っています。
http://codezine.jp/a/article/aid/322.aspx
のプログラムを下記の環境でデバッグしたのですが、
VS2005 Pro SP1
MS Platform SDK for Server 2003 SP1
MS Direct X SDK Nov 2007
下記のようなエラーがでてきてしまいます。
エラー 2 error C2504: 'IDXEffect' : 定義されていない基本クラスが宣言されています。 c:\program files\microsoft platform sdk\include\qedit.h 980
自分の経験・勉強不足は十分承知しております。
解決方法をご教授していただければ幸いです。
0837デフォルトの名無しさん
2008/01/01(火) 23:49:53ニコニコ動画のXMLファイルを読み込んで
入力動画に表示するフィルタは需要ありますか?
エンコード一発で字幕付き動画作れるようになる
0838デフォルトの名無しさん
2008/01/02(水) 21:15:36てらほしいっす!
0839デフォルトの名無しさん
2008/01/03(木) 03:56:17てら微妙。
DirectShowフィルタ作ってももはやだめなのかな。
0840デフォルトの名無しさん
2008/01/04(金) 00:50:16とりあえず「半透明で」はなく「最上面」とは限らないプログラムの動作状況がわからないと
なんともしようがない
0841デフォルトの名無しさん
2008/01/04(金) 04:53:48ノシ
そんなの作ろうとしてDirectShow勉強しはじめた人間です
0842デフォルトの名無しさん
2008/01/04(金) 05:57:17魑魅魍魎な設計ここに極まれり
0843デフォルトの名無しさん
2008/01/04(金) 06:43:25マジで?
DirectShow部分は簡単だから一緒に作ろうか?
メールのやり取りでもしながらさ。
とりあえず、文字を右から左に送るフィルタでも作ってプロジェクト一式渡そうか?
XMLのタグをどう扱うかで勉強しようかと思っていたが需要ないから諦めかけてた
0844デフォルトの名無しさん
2008/01/04(金) 15:09:32エラーメッセージを見る限り、
デバッグ以前の問題でコンパイルが通ってない、
と思われるがその認識でよい?
手元の環境では IDXEffect は以下のファイルで宣言されている。
C:\Program Files\Microsoft DirectX SDK (August 2007)\Include\dxtrans.h
DirectX SDK Nov 2007 でも同様の場所にあると思われるので、
そこにインクルードパスが通っているかどうかを確認してみるべし。
0846デフォルトの名無しさん
2008/01/04(金) 19:39:53ほい。了解。
なら一日くらいかけて作るよ(とはいってもやる気出すのに半日使うだけだけど・・・)
ところでDirectShowのフィルタをビルドできる環境はあるかい?
0847841
2008/01/04(金) 21:05:16* Windows 2000 SP4
* VC++ 2005 Express Edition
* Microsoft Platform SDK for Windows Server 2003 SP1
* DirectX 9.0b SDK
ttp://www.geekpage.jp/programming/directshow/ のサンプルをビルドできたから多分大丈夫
0848デフォルトの名無しさん
2008/01/05(土) 07:42:07環境あわせようとしたけどVC2005とDXSDK9.0は相性悪いな〜。
0849841
2008/01/05(土) 09:04:57別のXPプレインスコマシンがあるのでそこに環境作ってみます。
0850デフォルトの名無しさん
2008/01/05(土) 10:50:14DX9.0c+VC6とVC2005+WindowsSDKこの2つの環境を作りました。
両方のプロジェクトファイルを付ければいいですね。
文字を画面に出すとこまで作ったけど環境作るのでへこたれた為、少しだれた
0852836
2008/01/07(月) 22:48:08レスありがとうございます
>>そこにインクルードパスが通っているかどうかを確認してみるべし。
といってもVC++自体初心者なのでインクルードパスの通し方がわかってないかもしれませんが…。
ツール>オプション>
プロジェクトおよびソリューション>VC++ディレクトリ
プラットフォーム:Win32
インクルードファイルのところに
C:\Program Files\Microsoft Platform SDK\Include
C:\Program Files\Microsoft DirectX SDK (November 2007)\Include\
と入れてあります。
これであってるでしょうか?
0853デフォルトの名無しさん
2008/01/08(火) 16:13:27おkです。
あと、ライブラリのパス(ライブラリファイル)の方も同様に設定しておかないと
リンク時に見つからないと怒られます。
0854デフォルトの名無しさん
2008/01/09(水) 21:37:09おーい。一緒に開発しよっせ。
こんなクソソースよめっかっとかでもなんでもいいからなんかないの?
0855デフォルトの名無しさん
2008/01/11(金) 15:28:360856デフォルトの名無しさん
2008/01/11(金) 21:47:02千里の道もまずはGraphedtから
0857836
2008/01/11(金) 22:42:04C:\Program Files\Microsoft DirectX SDK (November 2007)\Include\
の中にdxtrans.hがありませんでした。消したつもりはないので、最初から入ってないような気がするのですけど、
dxtrans.hってNov 2007には入っていないのでしょうか?
0858デフォルトの名無しさん
2008/01/11(金) 23:04:28どうもすいません、自己解決しました。
DreictX SDK November 2007
ではdxtrans.hが元々入っていないようです。
↓ここを参照しました。
ttp://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2617687&SiteID=1
0859デフォルトの名無しさん
2008/01/12(土) 07:33:47( ´-`).。oO(といってもいろいろ削って雛型作っただけ…)
( ´-`).。oO(GraphEditでは四角の箱がとりあえずでた…)
0860デフォルトの名無しさん
2008/01/12(土) 09:36:47×戦かってみた (たたかかってみた、いくさかってみた)
○戦ってみた (たたかってみた)
0861デフォルトの名無しさん
2008/01/12(土) 10:18:10( ´-`).。oO(こまかいことは気にしないでね…)
0862デフォルトの名無しさん
2008/01/12(土) 10:43:50DirectX+VMR9 を使ってムービーを再生させると WMP を
起動してないときに比べて滑らかに再生される...
timeBeginPeriod(1)やD3DPRESENT_INTERVAL_ONEは
指定してあるんだけどな何かあるのかなあ
0863デフォルトの名無しさん
2008/01/12(土) 11:20:360864862
2008/01/12(土) 17:04:10アロケータ・プレゼンタを使ってテクスチャに転送して
Direct3Dでポリゴン板に貼り付けて描画しています
一応それなりに再生できるのですが
少しカクカクするところがあって WMPで見ているようにはいかないですね
己の限界を思い知らされてますw orz
0865デフォルトの名無しさん
2008/01/12(土) 19:10:04視聴に耐えられないほど悪いのでマルチスレッド化して高速化したいのですが、
ffdshowも何故かシングルスレッドしか動いてないみたいなんですが、
DirectShowの デコード→変換フィルタで変換→レタリング の流れをマルチスレッド化する方法を知っていたら教えてください。どうかお願いします
0866デフォルトの名無しさん
2008/01/12(土) 23:25:23まさかデバッグ版が重いという落ちではないだろうな?
デバッグ版だとスタックチェック等でとんでもなく重くなるので本来のパフォーマンスはわからない。
あと、たいていはメモリの読み書きでもっとも時間を消費するので、少なくなるようコードを改良汁。
マルチスレッド化は、自分で別スレッドを作っておいてデータ処理の段階で、自スレッドと別スレッドで同時に処理を分散し
待機関数で別スレッドがすべて処理が終わるのを待って、処理を完了するってかんじ。シグナルはイベントを使うのが良い。
0867デフォルトの名無しさん
2008/01/13(日) 00:28:19レスありがとうございます
プロジェクトの設定を確認しましたがデバッグ版ではなく、ちゃんとリリース版でビルドしています
マルチスレッド化の話はたいへん参考になりました。難しそうですが、やってみます
0868デフォルトの名無しさん
2008/01/13(日) 15:01:04Novemver2007 では未確認でした…。スマンカッタデス。orz
リンク先のフォーラムの回答「August 2007 を使え」が泣けてくる。
この削除が MS による意図的なものとすると
→dxtrans.h をインクルードしている qedit.h が使えない
→qedit.h で定義されているクラスやインターフェース
(DirectShow 編集サービスや SampleGrabber など)が使えない
となる訳で、かなり影響があるんでは…。
0869デフォルトの名無しさん
2008/01/14(月) 18:53:580870デフォルトの名無しさん
2008/01/14(月) 23:16:38そんなAPIは知らないけどフィルタグラフ作って最初にソースファイルとレンダラ繋げば
自動挿入されるけど…?
インテリジェンス接続ってやつ
0871デフォルトの名無しさん
2008/01/14(月) 23:48:36って具体的に言うと
IBaseFilter* s = ソースフィルタ、 IBaseFilter* r = ヴィデオレンダラ
graph->AddFilter(s)、graph->AddFilter(r)
あとどうするの?
sとrのピンを直接繋ぐ?
0872デフォルトの名無しさん
2008/01/14(月) 23:52:12そんなのどこの解説記事にも書いてある基本中の基本なんだからやってみればいいじゃん
0873デフォルトの名無しさん
2008/01/15(火) 00:14:46このスレで何度も言っちゃってるんですが
Graphedtを使ってどうなるかシミュレーションしてからコード書いてください。
そしてコード直接貼っての質問は最終手段にしてくださいね
0874デフォルトの名無しさん
2008/01/15(火) 00:19:59> sとrのピンを直接繋ぐ?
はい。そうです。
メディアタイプが非圧縮YUVならフィルタはさまないでつながるし、
圧縮されていてもMPEG4のV2ならコーディックも挟んでくれますよ。
後は試してないから知らない
0875デフォルトの名無しさん
2008/01/15(火) 01:12:31どうもありがとう。ちょっとやってみる。
GraphEditではやってみたんだけどね、ダメだったから何か追加処理が必要だなと思って質問してみた
0876デフォルトの名無しさん
2008/01/15(火) 01:34:01下の文章も付けて質問した方が今後早い解決に繋がりそうですね。
コーデックに寄ってはフィルタの優先度を上げないと自動で繋いでくれないものもあります。
自分の環境だけでなくユーザーの使うような環境でもテストしてみましょう
0877monamona
2008/01/18(金) 13:06:38そうですね。
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2617687&SiteID=1
ここにjiapeiさんが書かれている方法を元に編集したら若干警告はあるもののビルドできました。
SampleGrabber も使えました。
私の環境における編集内容は下記です。
//#include "dxtrans.h" ・・・ 495行目
IDxtCompositor //: public IDXEffect ・・・ 979行目
IDxtAlphaSetter //: public IDXEffect ・・・1484行目
IDxtJpeg //: public IDXEffect ・・・1725行目
IDxtKey //: public IDXEffect ・・・2400行目
0878デフォルトの名無しさん
2008/01/24(木) 11:34:22ここのサイトの一番したのプログラムを使わしてもらったんですが、不具合が起きてます。
Windowは2つ出ますがなにもしないと一つは真っ黒、もう一つの画面に2つのカメラの映像が交互に出ているらしく、
合成したみたいな映像になっています。
どうしたらいいでしょうか?
0879デフォルトの名無しさん
2008/01/25(金) 22:13:34・RenderStreamの引数を明示的に指定
0880デフォルトの名無しさん
2008/01/27(日) 01:55:50しかし、実装が悪いようで非常に重たいプログラムになってしまいました。
現在はメッセージループでPeekMessage関数によってメッセージを取り出し、
アイドル時にキャプチャと表示を行う仕様になっています。
改善策をご教授ください。
0881デフォルトの名無しさん
2008/01/27(日) 02:00:590882デフォルトの名無しさん
2008/01/27(日) 02:07:15キャプチャした画像に処理を加える必要があるので静止画をキャプチャしています。
0883デフォルトの名無しさん
2008/01/27(日) 09:55:140884デフォルトの名無しさん
2008/01/27(日) 11:46:050885デフォルトの名無しさん
2008/01/27(日) 11:59:290886デフォルトの名無しさん
2008/01/27(日) 15:52:350887デフォルトの名無しさん
2008/01/27(日) 16:51:15静止画に対する処理をスレッドでやればいいんでしょうか?
0888デフォルトの名無しさん
2008/01/27(日) 17:57:51flvからaviに変換するようなアプリを作ろうと思っているのですが、
PCにインストールされている映像のエンコードのコーデック(フィルター)の一覧を取得する方法ってどうやればよいのですか?
0889デフォルトの名無しさん
2008/01/27(日) 22:13:49graphEditでもフィルタ一覧表示してるでしょ。大丈夫さ君ならやれるさファイトファイト
0890デフォルトの名無しさん
2008/01/27(日) 22:15:55フィルタ構成は
「ソースフィルタ」-「サンプルグラバ」-「レンダラ」
にしてサンプルグラバから静止画を取得するようにします。
このように設計してやることでマルチスレッド必要なく軽いアプリができます
0891デフォルトの名無しさん
2008/01/27(日) 23:55:25ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/enumeratingdevicesandfilters.asp
0892デフォルトの名無しさん
2008/01/28(月) 00:30:39dshowutil.cppやstreams.hを使っています。
このとき、error lnk1181 でc:\program.objが見つからないとのえらがーでます。
どうやったら解決するでしょうか?
0893デフォルトの名無しさん
2008/01/28(月) 00:39:190894デフォルトの名無しさん
2008/01/28(月) 01:16:43お力かしてください。
0895デフォルトの名無しさん
2008/01/28(月) 01:25:22VC2005でDirectShowがインストールできませんよ
といっているの?
私もvc2005でDX9をインストールに失敗した経験があります。
vc2005(有料版)では素直にwindowsSDKを使ったほうが簡単でしょう
>>894
あなたもインストールに困っているのでしょうか?
その問題は昔のDirectShowプログラムをビルドすると出てきます。
直し方は新しくプロジェクトを作ればよかったと思います。
が、その後別の問題があったような覚えがあります。
DirectShowのインストールをやりなおしましょう
0896デフォルトの名無しさん
2008/01/28(月) 19:30:500897デフォルトの名無しさん
2008/01/28(月) 19:31:130898デフォルトの名無しさん
2008/01/29(火) 01:15:09英語のサイト見るとそのあたりの情報調べられるよ?
DirectShow人口増やしたいから答えるけどさ…
0899デフォルトの名無しさん
2008/01/29(火) 01:16:52そんなに難しくないだろ・・
0900デフォルトの名無しさん
2008/01/30(水) 01:00:16「MEDIATYPE_Video メジャー タイプを持つあらゆるタイプ」
になっていますが、これはYV12なども接続可能ということでしょうか?
つなげてみると、うまく繋がらないのですが。。。
0901デフォルトの名無しさん
2008/01/30(水) 02:01:26CLSID_VideoInputDeviceCategoryに属するフィルタの作成が出来ません。
g_TemplatesでCLSID_VideoInputDeviceCategoryを指定しているのですが、
CreateClassEnumeratorで列挙しても検出してくれません。
デバイスを伴ったWDMフィルタでなければ作成できないのでしょうか?
なにかヒントでも良いので教えてください。
0902デフォルトの名無しさん
2008/01/30(水) 04:16:17ちなみに、Baseclassのコードでは結論から言うとデフォルトの CLSID_LegacyAmFilterCategory にしか登録されない素敵仕様。
一からコード書くのも面倒なんで、俺はDllSetup.cppを改造したものを使ってこの問題に対処した。
0903901
2008/01/31(木) 00:17:30私も902さんに倣ってDllSetup.cppから必要な部分抜き出して、
登録部分を実装しました。
感謝感激でございます。
0904デフォルトの名無しさん
2008/01/31(木) 00:51:11DirectShowを利用したプログラムを作成していました。
今度、VB2005で同じようにDirectShowを利用するプログラムを作成するの
ですが、やはり、DirectX Software Development Kit(August 2006)がよい
のでしょうか?
0905デフォルトの名無しさん
2008/01/31(木) 01:03:460906デフォルトの名無しさん
2008/01/31(木) 08:25:47資料数と実装難易度の問題で。やっぱりメジャーな使い方が地雷を踏みにくくさせる
0907デフォルトの名無しさん
2008/02/02(土) 14:20:25ビットマップを挿入するタイミングは非同期でないといけないので、
今回の場合はPushSourceフィルタでは駄目でした。
Asyncfltを改造すれば、要求にこたえる機能が実装できそうだと思い見ています。
IAsyncReaderのRequestでIMediaSampleを渡すところまでたどり着ければ何とかなりそうなのですが、
取っ掛かりがつかめません。
どなたか作ったことがある、又は分かる方居ませんか?
下流フィルタとのつながりのやり取りのフローだけでも参考になるものがほしいです。
ちょっと、難易度の高い質問で申し訳ないですが、分かる方お願いします。
0908デフォルトの名無しさん
2008/02/02(土) 15:18:47ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/pullmodel.asp
0909デフォルトの名無しさん
2008/02/02(土) 15:40:48教えていただいたURLはすでに読んでいました。
MSDNのそれらしきところを読んで回った末に、
>IAsyncReaderのRequestでIMediaSampleを渡すところ
というのが出てきたところです。
フィルタが出力ピンを用意して、それがIAsyncReaderをインターフェイスに持っているということですよね。
たとえばpushsourceでは
フィルタ>出力ピン の順に作って、
その出力ピンに下流ピンがGetMediaTypeを呼んで、良ければ繋がって、
FillBufferが呼ばれてIMediaSampleに内容を渡す
という流れですよね。これはグラフが動いている間は常に要求されているので渡す時間は実時間と違います。
パソコンが早ければ1秒で1分のビデオが作れます。そして、渡すべき物が無く、戻り値にS_OKを返さない場合、終了します。
今の段階ではFillBufferがRequestにとって代わるような感じを持っています。
渡すべき内容が無い場合、グラフに待ってもらいたいのです。
サンプルのAsyncfltはキューとかIOとかで割とシンプルじゃ無いので取っ掛かりがつかめません。
理解している人に噛んで砕いて教えていただけたら手っ取り早いなというのが実のところです。
任意のビットマップが用意できたら下流に流し、次のビットマップが無ければリクエストに対し無いと言って次回。
次のが用意できるまでは下流はリクエストをタイミングごとに出し続けて待機というイメージです。
そのようなシンプルなサンプルがほしいと思っています。
よろしくおねがいします。
0910デフォルトの名無しさん
2008/02/02(土) 17:56:15DirectShowを使って、オーディオ入力デバイスに対してファイルストリームから入力を行う事は可能ですか?
やりたい事は、ファイルシステム上のwavファイル等をオーディオ入力にいれるというものです。
よろしくお願いします。
0911デフォルトの名無しさん
2008/02/02(土) 18:56:020913デフォルトの名無しさん
2008/02/02(土) 20:57:210914デフォルトの名無しさん
2008/02/02(土) 22:14:08pushsourceで出来ました。
CSourceStream をちゃんとしらべれば簡単な話でした。
掲示板で質問すれば手っ取り早い、と思うのは自分勝手でした。
すみません。
しかし、MSDNに限らず、こういうのの説明文はさらっとしすぎで初めての人には理解に時間がかかる。
もう少しデータのナガレをきちんと載せてほしいとこです。
あと、恩返しではないですが、
Delphiでやってるので、質問があればお答えします。
0915デフォルトの名無しさん
2008/02/02(土) 22:33:53レスありがとうございます。
ソースフィルタでストリームに処理を加えると、
自分以外のそのデバイスをlistenしてるアプリにも反映されるのでしょうか?
0916デフォルトの名無しさん
2008/02/02(土) 23:37:390917デフォルトの名無しさん
2008/02/03(日) 05:27:36自分のやりたいことがPULLモデル/PUSHモデルどちらなのか
良くわかってなかったっつーことか。なんだかなー
0918デフォルトの名無しさん
2008/02/03(日) 14:06:550919デフォルトの名無しさん
2008/02/04(月) 02:12:37全レスのなかで私くらいしかしてないような…
ゴバクかいな
0920デフォルトの名無しさん
2008/02/04(月) 17:16:44Pull でも FillBuffer で待たせておけばOK.
0921デフォルトの名無しさん
2008/02/05(火) 13:48:49起承転結みたいだなw
0922デフォルトの名無しさん
2008/02/11(月) 00:41:520923デフォルトの名無しさん
2008/02/11(月) 01:01:570924デフォルトの名無しさん
2008/02/11(月) 01:14:59戦っちゃだめだよな
0925デフォルトの名無しさん
2008/02/11(月) 01:58:210926デフォルトの名無しさん
2008/02/11(月) 10:11:210927デフォルトの名無しさん
2008/02/11(月) 18:58:20CSourceStream はどのタイミングで FillBuffer を呼ぶの?
CSourceStream::DoBufferProcessingLoop の説明には
毎回ループを通じてアロケータから空のメディア サンプルを取得する。
とあるので、スレッドループから常に呼び出されていると理解したけど?
タイミングは随時?それとも下流フィルタから呼ばれてるの?
要は、渡すべきサンプルが FillBuffer 呼び出しに間に合わなかった場合の処置だけど、
戻り値に S_FALSE を渡すと終了してしまうよね。
IMediaSample を更新しないで単に S_OK を渡してやれば次回にスキップできる?
今やってるのではうまく行かないんだよね。
0928デフォルトの名無しさん
2008/02/11(月) 19:47:040929デフォルトの名無しさん
2008/02/11(月) 20:34:38レス数が900を超えています。1000を超えると表示できなくなるよ。