1 名前:デフォルトの名無しさん [2006/11/08(水) 00:25:56 ] 前スレ pc8.2ch.net/test/read.cgi/tech/1026666092/
348 名前:デフォルトの名無しさん [2007/03/26(月) 09:07:56 ] 新規質問です。 ピン接続時のメディアタイプを調べたいのですが簡単に調べる方法がないため今回「メディアタイプチェックフィルタ」を作る事にしました。 質問1.調べるフィルタを誰か作ってませんか? 時間をかけず作りたい為、「TranceForm」をベースにしているのですが、このフィルタで入力ピンのみの構成のフィルタはできますか?(テンプレートのピン数を1本にしても2本になってしまいました何故…?)
349 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:16:35 ] いくら出す?
350 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:17:19 ] 20円
351 名前:デフォルトの名無しさん [2007/03/26(月) 12:14:35 ] >>349 自分なら作るのに3〜4時間位かかってしまいそうなので、 時給1000円×4hまでならなんとか。。 でも誰か作っていそうなんでそれを使いたいです。
352 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 12:53:47 ] >>348 Dumpフィルタベースじゃダメなんかいね? あれは入力ピン1コだけど。
353 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 13:07:03 ] IBaseFilter::EnumPins IPin::ConnectionMediaType それともこっちか IPin::EnumMediaTypes 簡単だろ? とりあえず、リファレンスくらい読め。
354 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:49:48 ] TransformFilterならそのまんまCheckMediaTypeで全部拾えばよかばってん
355 名前:デフォルトの名無しさん [2007/03/26(月) 23:39:39 ] >>354 考え同じ。せっかくだから上位フィルタに優先接続して欲しいタイプも入れられるようにしようかなと検討しとるですばい。 IBaseFilter::EnumPins これはピンごとに管理したい時につかうメソッドだよ。ピン1つでは実装いらないよ IPin::ConnectionMediaType これは再生途中にタイプ変更したい時に実装したほがよさそ
356 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:10:35 ] 突然思い出したんだけどsampleの中にnullnullフィルタだかなんだか プロパティページで接続タイプ一式が表示されるやつがあったような ないよーな
357 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:40:51 ] 何か違うと思って調べてみたらNullInPlaceだったわ ごめんな nullprop.cppのNullIPProperties::OnApplyChangesみるといいアルよ
358 名前:デフォルトの名無しさん [2007/03/27(火) 00:56:20 ] なるほどなるほど。 NullIPPropertiesはなかなか難しいことやってますねぇ。。。 理解しずらいや。。 取り敢えず。 上位フィルタとの接続された フォーマットタイプ、 メディアタイプ、 メディアサブタイプ をプロパティページで表示できる変換フィルタを作成できました。 フォーマットタイプが「VIDEO」だったら解像度とかフレームレートとか付加情報を 表示できるようにしてみるか。。 このフィルタ欲しい人いる? まぁきっとだれかもっといいものを作っている人がいるかとは思うのですが
359 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 01:23:35 ] ノシ
360 名前:デフォルトの名無しさん [2007/03/27(火) 01:30:21 ] 了解。じゃあ 人に使ってもらうには汚すぎなんで (改造しながら他のフィルタのデバッグしてるんで・・・) 週末にでも機能を絞り込んで 見やすくしてみます。 終わったら、 h ttp://ragesakai.web.fc2.com/ にWebpageもってるんであげてみます。
361 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 11:29:14 ] ありがたいっす。マタリ待ちます。
362 名前:デフォルトの名無しさん [2007/03/28(水) 07:41:45 ] 自分が知らないメディアタイプが結構あるね。 メディアタイプ一覧がわかるサイトさがさなきゃ 接続メディアタイプチェックフィルタでは、最悪知らないGUIDが出てきたら そのまま貼っとくか…
363 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:21:39 ] uuids.hでよかばってん
364 名前:デフォルトの名無しさん [2007/03/28(水) 21:41:53 ] 九州男児さんありがとう
365 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:03:46 ] AVIファイルの一部を切り出して 拡大縮小したAVIつくりたいんだけど 元AVI(640,480)でRECT(120,120,440,320)の範囲だけきりだして320x240のAVIにしたり 範囲を拡大して640x480にしたいんですが、サンプルグラバのコールバックつくって 中で処理しなきゃダメですかね?
366 名前:デフォルトの名無しさん [2007/03/30(金) 08:24:20 ] 「中」ってどこを指してる? 自分なら映像切り抜きフィルタを作って解決するけどフィルタグラフ側でもできるよ。 フィルタグラフ側でAVIの切り抜きを行った時のサンプルグラバの制御は凄く大変そう…ってか自分には無理なレベル
367 名前:デフォルトの名無しさん [2007/03/30(金) 08:30:25 ] あ、切り抜きの手段としてグラバを使うのか。 グラバで取得した画像は元AVIと同じサイズなんね。なら出来…るかな? だけどやっぱり、「切り抜き拡大縮小フィルタ」作るほうが簡単なのは間違いない。
368 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:49:08 ] >>367 TransformFilterで切り抜けばよかばってん。 んで後ろにAviMux、FileWritterとつなげればよかよ。
369 名前:365 mailto:sage [2007/03/30(金) 21:25:10 ] サンプルグラバのコールバック=「中」です。 TransformFilterって、ベースクラスのライブラリから自分で作るフィルタですか? 最初から用意されててAddFilterで追加できるなら使ってみたいかも。
370 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:38:03 ] > TransformFilterって、ベースクラスのライブラリから自分で作るフィルタですか? んだよ自分で作るんだよ Transformメソッドで好きにいじってよし んで後ろにAviMuxが繋がる時にね、ビデオの縦横サイズはオリジナルサイズじゃなくて 自分が変更するサイズを提示するったい Muxは提示されたサイズをヘッダ情報に 書いてた気がするばってん
371 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:23:31 ] IRenderEngine2とかで何とかなるんでしょうか。 DirectShowの編集サービスっての使えますか?
372 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:37:06 ] 質問に答えてくれた皆様ありがとうございました。 ちょっくらトランスフォームフィルタつくってみます。 コンプレッサの前にトランスフォームでサイズ変える処理いれてみます。 CreateDIBSectionでHBITMAPつくってストレッチビルドして試してみます。
373 名前:デフォルトの名無しさん [2007/03/31(土) 00:03:12 ] >>372 作り方は大正解◎。 コツを少々・・・ 流す映像のサイズをかえちゃうと 設計が大変になるから 「切り出し」→「拡大」でもとのBMPサイズに合わせるようにすると いいよ。 それとストレッチベルトを「CTransform::Transform」内でつかうんだけど ストレッチベルトの関数1つで全体のCPU負荷が15%ぐらい上がってしまう。 もし気になるなら、画像処理ライブラリで置き換えするとよいよ 俺ここんとこ九州男児さんと考え方が似てる。。同じような職種&年齢なんだろうな。
374 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:27:00 ] おいどんは昔printfをプリンテフと読んで笑われた苦い経験があるばってん 一応つっこんでおくけど、「ブリット」ですたい。 StretchBlt ストレッチブリット BitBlt ビットブリット
375 名前:デフォルトの名無しさん [2007/03/31(土) 00:37:23 ] >>374 ほへ〜。初めて知りました。 呼び方は「Blt」⇒「ベルト」と呼んでました。。 言い訳しまくると、自分組み込み系出身でwinアプリ作るの今年から初めた門で。 WinAPIを知らなさすぎる。。この機会に他の呼び方も覚えよう 今後直しますありり^^ そして、メディアタイプチェッカーも明日だらだらし終わったら修正に取り掛かるっす
376 名前:デフォルトの名無しさん [2007/03/31(土) 00:42:28 ] 関数の呼び方議論↓ rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200508/05080002.txt
377 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:46:01 ] >>373 なんか、映像のサイズ変えて保存したいって突然いわれたんで 変更しなきゃいかんのです。 切り出して切り出したサイズで保存なんですよ。 切り出して元の再隋拡大だったらサンプルグラバでおわったのに。 サンプルグラバでCreateDIBSectionかけてmediasampleからバッファとって データ加工して代入。ここまでは出来てOKだった・・・ ストレッチビルトして正しく終わったのに・・orz...
378 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:09:59 ] ぶりっとっていう呼び方なんかアレだよね。アレ。 DirectX8からPresent()になったのはホント良かったと思うよ。
379 名前:デフォルトの名無しさん [2007/03/31(土) 01:26:56 ] >>377 ごめん。。 内容的には以前自分が作った「解像度リサイズフィルタ」 これの仕組みがまんまメインになってくるんだが 教えてあげられない。。 自分で調べてくれ。
380 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:57:15 ] >>379 できたから問題無し。
381 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:28:31 ] TransformFilterを使わずにビデオソースの拡大縮小と切り出しする方法って無いのかな。 切り出しと拡大縮小ぐらい用意されてるような気がして探し回ってた時期があった。
382 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 16:37:52 ] 一口にビデオソースといってもRGBやらYUVやら色々あるけんね 拡大、縮小にも色々なアルゴリズムがあるったい 自分の好きなようにつくるのが一番よかよ どうせつくるならそのへんプロパティページで色々指定できるとうれしいね
383 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 22:24:58 ] ここもネガティブさんが沸いてるよ。 自分で調べれって話なら書く必要ないじゃん。 教えて上げられないレス増えるからネガティブさん消えてくれwwwwwwwwwww
384 名前:デフォルトの名無しさん [2007/03/31(土) 23:03:57 ] >>383 DirectShowやってる人の総人口が少ない。 そしてそれが理由なのかここのスレの回答側に立つ人も少ない。 このスレで役に立てばと思って結構回答をしているが、 何が難しいかわかるけど教えてあげられない状況だったので、 放置されるよりはいいと思って書き込みました。 (本スレ後半でageてるやつはほとんど自分) >>383 さんもそんなこと書き込んでないで回答側に回ってくれ
385 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 00:08:34 ] まあ内容はともかく、少しでも盛り上がってくれるのは嬉しいわな。 その昔サンプルグラバを知らなかった自分は自前のフィルタ作っちゃったし、 話の流れで知ることもそれなりに多い・・・。かな?
386 名前:デフォルトの名無しさん [2007/04/01(日) 03:12:34 ] >>363 uuid.hではすべてのメディアタイプは乗ってない。 「MEDIASUBTYPE_I420」 が入っていなかった。
387 名前:C++ mailto:age [2007/04/01(日) 08:46:54 ] C++は今最も優れているプログラミング言語だ。C++さえあればなんでも出来る。CGI一つにしたって、今はPerlなんて使わなくても全部C++で出来る。そんなC++を使わないでどうする。
388 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 13:44:39 ] 「全て」のメディアタイプって概念をどう捉えるかだな まずはDirectX SDKのindlude、DirectShowのBaseclasses ここのソースで定義されてるものを 押さえておけば良いんじゃないの? 極端な話、guidgen使って自分で独自のMediaType作れちゃうわけだし。
389 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 22:43:15 ] MEDIASUBTYPE_I420ってGUIDとしては存在するかもしれないけどどっかのメーカーが勝手に作っただけじゃないの? DirectShowのオフィシャルな定義としてはMEDIASUBTYPE_IYUVじゃないのか。
390 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 23:22:10 ] そういや自分もmplayerの公開されているソースを見て 普通にMEDIASUBTYPE_I420という定義があるものと思い込み、 いざ実装してみたらものの見事に未定義だった、ということがあったなあ。 IYUVとI420は同じフォーマットのようなので、 私もMEDIASUBTYPE_IYUVを使ってますが・・・。
391 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 09:52:04 ] 拡張可能なばっかりにかえって不毛になってるのか やれやれ
392 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 11:49:43 ] ホントにDirectShowって資料少ないのね。VfW勉強した時も思ったけど こういう動画処理インターフェースってプログラムとして人気ないのかな?
393 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 13:56:56 ] 資料は少ないなりに充実してると思うけど・・・ 漏れにはACLの方がワケワカメだよ。
394 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 14:27:52 ] 動画処理に興味をもつほど自由に弄れる動画素材を持ってる人が少ない、 という事情もあるのではないか。 後は仕事になるかどうかとか。
395 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 20:48:20 ] + 三ミヽ、⊂⊃ + 三ミ |∧η∧ /⌒\ (,,・Д・)<ただいまんこ〜オレも便乗して質問だぞ。 + 川川 l l/つ つ━☆ トランスフォーマーとかいうのをつかって 〜( / CTransformFilter::DecideBufferSizeここでメモリを確保する所までたどり着いたぞ。 (/"U 俺も拡大縮小をやりたくて書き込みするぞ。オマンコクロスだぞ。 C言語は7年目だぞ。切実だぞ。
396 名前:デフォルトの名無しさん [2007/04/03(火) 22:27:40 ] >>395 俺は3年目だけど苦労したができたぞ。 で、何がしりたいんだぼけぇ
397 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 22:32:34 ] ・質問のただしいしかた悪いしかた 【いい例】 ぽまえら!おしえやがれぃい。 QVGAをVGAにリサイズしようと思うんだがDecideBufferSizeというめそで 115200byteしかとれねええんじゃUZEEEEEE!! これを230400byteとれるようにする方法を教えやがれ 【悪い例】 いつも大変このスレッドを読ませていただき参考にさせてもらっております。 今回拡大縮小をやりたいのですがどのようにしたらいいかわかりません。 C++、MFCはできます。 また自分は過去XXXということをやっておりました。 大変恐縮ですがなにとぞご指導をよろしくお願いいたします
398 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 22:37:54 ] まちがえた〜 ×115200 ○230400 ×230400 ○460800 用は質問の観点を絞り込んでくるかどうかの差だからな
399 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 23:59:22 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>396 ポンドルウォーリアを特殊召喚する方法がしりたいぞ。 ヽ |フ ナニがしたいのか忘れたぞ! /_ _| AVIを半分の解像度にして保存したいんだぞ!これが目的だぞ。 逆もあるぞ。オパンツ丸見え! >>397 うんこちんこまんこ?キョカカカ!あばーあばばー! 参考にさせてもらったぞ。面倒だから、ゴゾブログで質問に答えてくれればそれでいいぞ。 オマンコクロッサー!
400 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:59:12 ] ・・・>>397 で極端に書いたのに意味を理解しとらんのでヌルーする
401 名前:デフォルトの名無しさん [2007/04/04(水) 01:28:29 ] メディアタイプチェックフィルタ 作ったぞ 実は裏で機能をいろいろ盛り込んでみたが、 普通の使い方だけしてくれ。 zetubou.mine.nu/itoshiki/upload.cgi っ【 [zetubou6474.bin] メディアチェックフィルタ 96 application/octet-stream 2007年04/04(水)01:25 これをリネーム ⇒0Mediachk.ax それをregsvr32で登録
402 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 01:52:35 ] ここはム板だ
403 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 08:59:19 ] ゴゾブログのプロフ欄の写真の子カワイイ。 写真と引き換えならオニーサンがAVI半分にするフィルタ作ろう。(ただしソースはやれないがな)
404 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 14:50:04 ] www.free-codecs.net/Moonlight_Scalar_DirectShow_Filter_download.htm
405 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 16:48:36 ] >>404 このムーンライトフィルタってさ、カメラがI420の時は接続すらしてくれないんだね。 解像度もメディアタイプも変更してくれるいいフィルタだと思ったんだけど残念
406 名前:359 mailto:sage [2007/04/04(水) 17:35:35 ] >>401 (>>360 の人?) ありがとう、ダウンロードしてみました。 個人的には結構重宝しそうな感じです。
407 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:23:20 ] >>360 =>>401 です。 ちゃんと動きましたか? バグを見つけたら速やかに報告よろ。 時間見つけ次第ちゃんとウェブページに反映しとくです。 感謝されるのに生き甲斐を感じた。ありり
408 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 19:27:31 ] CBaseVideoRendererでフィルタを作っていて、一時停止中に画面の再描画を 行うためGetCurrentSample()でサンプルを得ています。 サンプルの取得は成功しているのですが、このあとに再生するとDoRenderSample()が 呼ばれなくなって固まってしまいます。 どうしてでしょうか?
409 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:04:25 ] >>408 Releaseし忘れっぽい
410 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:07:23 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<ただいまんこ〜拡大縮小できたぞ。BokkingFilterの完成だぞ。 ヽ |フ ビデオのサイズが変わらなかったのはフィルタ接続後にサイズ変えてたからだぞ。 /_ _| CheckTransformでサイズを変更したぞ。 変更したサイズからRGB24で必要なバッファサイズを計算して保存だぞ。 ストレエッチDIBitmapだぞ。それに対してソースからストレッチDIBitsして 完成したぞ。 そして完成した後に次の問題が出たぞ。 時間指定して3分の動画で1分目から2分目を抽出したいんだが ControlStreamにS_OK帰ってきてもダメポだぞ。 AVI再圧縮で時間指定して抜き出すテクを知ってたら教えて欲しいぞ。オマンコクロスだぞ。切実だぞ。
411 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:12:04 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<あと、AVI MuxフィルタをキャプチャグラバからFindInterフェラして ヽ |フ IAMStreamControlを生み出してStartAtとStopAtする方法を作ったんだが /_ _| ム圧縮AVIなら何とか成功してWMVとかコーデック使うと画像が表示されんぞ。 あと、保存してない間も無駄に待たされて酷い目にあったぞ。 誰かオレがナニをすべきか教えて欲しいぞ。
412 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:36:48 ] ControlStream(&PIN_CATEGORY_CAPTURE,ぬるぽ,ぬるぽ,開始時間,終了時間、0,0); ⊂⊃ ★ ∧η∧ \_(,,・Д・)<キャプチャビルダのコントロールストリームはこんな具合になってるぞ。 ヽ |フ オマンコクロスだぞ。ソースを持って変えれないので具体的に説明できんぞ。 /_ _|
413 名前:408 mailto:sage [2007/04/04(水) 22:46:10 ] ありがとうございます。 まさにそれでした。SDKのヘルプに書いてありましたね
414 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 23:23:04 ] >>410 素直にこれ使えば? www.microsoft.com/japan/msdn/directx/techart/cplusvbappdevs.aspx www.microsoft.com/japan/msdn/directx/techart/wm_des.aspx
415 名前:414 mailto:sage [2007/04/04(水) 23:23:49 ] 貼り忘れた msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdx8_c/ds/des/Oview/whatisDES.asp
416 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 23:35:12 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>415 それも考えたんだぞ。大人の都合ってヤツでダメなんだぞ。 ヽ |フ くやしいぞ。オマンコクロスファイヤーハリケーンだぞ。 /_ _| 明日、ためしに作ってみるぞ。
417 名前:デフォルトの名無しさん [2007/04/04(水) 23:45:11 ] いいから↑はほっといてやれ。
418 名前:359 mailto:sage [2007/04/04(水) 23:57:28 ] >>407 今のところ問題なさそうですよ。 ただ、スレの流れを見ると私以外で使ってみた人いないのかな?w もう少し使ってみて気がついたことがあったら報告しますね。
419 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 00:03:51 ] >>418 >私以外使ってる人いない… (´・ω・`)ショボーン
420 名前:デフォルトの名無しさん [2007/04/05(木) 21:34:17 ] おまえら便利なフィルタの一覧サイト作ろうぜ! あと、××の製品かうと着いてくるフィルタは…とか語ろう
421 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 11:53:29 ] つpc11.2ch.net/test/read.cgi/avi/1030190329/ ・・・とはいえ、思いっきり過疎ってるスレだし>>419 のニーズには合わんかな。 ところで質問です。 AddSourceFilterで追加したファイルソースの 出力ピンのメディアタイプを指定する方法はないでしょうか? あるファイルを指定したとき、ただRender()しただけでは期待しているフィルタに 繋がらない(ファイルソースのメディアタイプがGUID_NULLになっている)ので 強制的に指定してみたいのですが・・・。
422 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 12:41:37 ] >>421 =>>359 さん?? 質問は>>419 に聞いてるのかな? だったら応えます。 上流フィルタがカメラとかの入力デバイスの場合は「フィルタのピンプロパティ」から出力タイプを変更できるものがほとんどです。 仮に「動画」などのファイルであれば変換フィルタを噛ます事で変更は出来ますが新たに付けてやることは出来ません。 新規にフィルタを作成すればメディアタイプを付加しる物を作れるよ。 他の方法はわかりません
423 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 13:13:09 ] >>422 > >>421 =>>359 さん?? うわー、なんで分かるの?w > 新規にフィルタを作成すればメディアタイプを付加しる物を作れるよ。 > 他の方法はわかりません やっぱりそれしかなさそうですね。 AsyncRdrサンプル辺りをベースに1つ作ってみます。
424 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 01:07:30 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<無圧縮タイプのAVIなら時間切り出しできたぞ。 ヽ |フ ただ、無駄に時間がかかるぞ。切り出すまでフィルタにデータが流れて処理してるんだぞ。 /_ _| ポンドルウォーリア特殊召喚だぞ!ゴルァ!
425 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 10:32:36 ] >レンダラは知らないけど、画面の上側にプレーヤを持っていくと少し(体感しないけど) >速くなるらしい。なんかPresent(?)の戻りが早くなるとか言ってた。 これ本当?
426 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:42:57 ] >>425 画面描写しないぶんタイムスタンプに忠実になるだけかと。。 >>424 の話とは全然違う話
427 名前:デフォルトの名無しさん [2007/04/08(日) 17:03:02 ] Presentの戻りって何? プリロールかな?としても意味通じないし… 予測ツカナス
428 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 17:45:38 ] IDirect3DDevice9::Present()の話だな。
429 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 21:41:47 ] 初心者です。SDKサンプルで分からない点があるのですが、お教え頂けないでしょうか。 プログラム動作としては、3つのmp3ファイルをタイマーで順繰りに再生するだけです。※1 この中でソースフィルタを変更してグラフを再構成する部分で分からない点があります。 流れ 1.新しいソースフィルタをグラフに追加する。 2.古いソースフィルタをグラフから削除する。 3.新しいソースフィルタの出力ピンからRenderする。 2の部分の詳細は以下のようになっています。 A.グラフ内のフィルタを列挙する。 B.列挙された全フィルタについて a.一旦グラフから削除する b.古いソースフィルタでなければグラフに追加する 疑問点 b.の部分がある意味がわかりません。自分としては、グラフ内の全フィルタを削除して、新しい ソースフィルタを追加して、Renderすれば簡単に思えるんですが... どうかよろしくお願いします。 ※1 ソースはSDK_Path\Samples\C++\DirectShow\Players\BGMusicです。
430 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 22:16:14 ] SwapSourceFilterのメソッドのこと?
431 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:29:52 ] >>429 Render は重いから。
432 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 00:46:05 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>429 サウンドってのは、レンドルァすると全部のcodecを試すんだぞ。 ヽ |フ だから、全て消して再構築すると連続再生とかできんぞ。 /_ _| アイマスの魔法をかけて!から、とかちつくちての連続技の間に途切れるって事だぞ。
433 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 01:13:25 ] >>432 やべぇ見直した。。
434 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 01:55:46 ] ありがとうございます。 なるほど、それで以前使ったフィルタは残してたんですねφ ところでその時、つながっていないフィルタがグラフ上に散在している状態ですよね。 その状態でRenderしたら、全Codecを試さず、散在しているフィルタを繋げてくれるんですか? それともRenderを使わず、ピンを繋ぐ方法が別にあるのでしょうか? この板のレベルに達するまで勉強して、出直してきます。(時間かかりそう...)
435 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 07:21:49 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>434 朝勃ち中だが答えるぞ。 ヽ |フ レンダーすっと、フィルタが追加されている物から試すんだぞ。 /_ _| そのため、レンダーする前にvmr9のフィルタとかを入れておくとただのビデオレンダーじゃなくなったりするぞ。 だから、先に自分で作ったフィルタを入れておくと正しく繋がったりするぞ。 もちろん、Renderを使わずにグラフビルダのほうでConnectすることができるぞ。 IPinってのをフィルタから抜き出して接続できるみたいなんだぞ。 使った事無いからうまんちんまんだぞ。
436 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 07:39:07 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<なんか、間違ってるかもしれんが許してほしいマンコ!んじゃ為替予想書いてくるぞ。 ヽ |フ /_ _|
437 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 12:02:08 ] すみません、質問いいですか? 今、DirectShowでUSBカメラからサンプルグラバでBMPをキャプチャするプログラムを作っています。 コールバックを使用してキャプチャをしようとしているのですが、 SetOneShotを使って1フレームだけキャプチャすることは出来ないのでしょうか? ためしにSetOneShot(TRUE)としてみても、コールバックされ続けてしまいます。
438 名前:デフォルトの名無しさん [2007/04/10(火) 17:56:39 ] 出力ピンがオーディオとビデオの2つある、Splitterフィルタを作成しています。 フィルタのGetMediaTypeでは、ピンによって2通りの設定が必要と思っています。 (オーディオの方の出力ピンからGetMediaTypeが呼ばれた場合はオーディオの値をセット、 ビデオの出力ピンからGetMediaTypeが呼ばれた場合はビデオの値をセットというように。) しかし、GetMediaTypeでは、現在どちらの出力ピンから呼ばれているのか判別できないのですが、 どうしたら良いでしょうか。 出力ピンのクラスは同じものを使っているのですが、オーディオ用のピンクラス、ビデオ用の ピンクラスと別に作成しなければならないのでしょうか?
439 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 19:30:13 ] >>438 自分がどっちのピンかを区別して処理を変えればいいじゃん。
440 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:10:34 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>437 ただいまんこー!ドピュンコしたあとに、コールバックを外せばOKだぞ。 ヽ |フ コールバックをセットしたままだと永遠にデータが流れるぞ。 /_ _| オレだったらSampleCBのあるクラスに BOOL m_Ochinpoいれて データを流したくない時はfalseいれて SampleCBのなかでreturn S_OKしちゃうぞ。 オマンコクロッサー!
441 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:13:06 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>438 IPin淫乱フェラにあるQueryPinInfoで解決できる気もするぞ。 ヽ |フ 俺も調べないと分らんぞ。スマソだぞ。力になれんぞ。 /_ _|
442 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 22:06:54 ] VBプログラマにVisual C++を教えるスレ★ Part25
443 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:10:36 ] >>441 タソ フィルタ内部の話だからQueryはちがうとおもうぞ。 自分も>>439 の意見に賛成です。 @純粋仮想メソッドGetPinを実装してピン番号を取得 AGetMediaTypeにてまず@を呼び出す。 Bピン番号が「1」ならビデオだから・・・メディアタイプ「Video」を要求 Cピン番号が「2」ならAudioだから・・・・メディアタイプ「PCMAudio」を要求 iPositionにて要求するものをそれぞれ数個書いてやればいいかな。。
444 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:49:17 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<>>443 オレはトランスフォーマーフィルタで1対1の戦いしかやったこと無かったぞ。 ヽ |フ これでピンが複数あるフィルタも手だせそうだぞ。 /_ _|
445 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:50:19 ] >>444 コンボイの謎を2週くらいクリアしとけ
446 名前:438 [2007/04/11(水) 14:38:35 ] 返事ありがとうございます。 >>439 僕はどっちのピンか区別できなくてコマッてます… >>443 GetPinはピン番号を指定して、その番号のピンを取得するのだと思うのですが。 それだとピンの区別はできなくないですか? 実際には、フィルタはm_pOutputAudioとm_pOutputVideoの二つの出力ピンを持ってます。GetMediaTypeの中で、CBasePin::Name()でピンIDを取得して、判断しようかと思いましたが、結局ピンの指定によって取得値が変わってしまいます。 m_pOutputAudio->Name() とすればAudioが返るし、 m_pOutputVideo->Name() とすればVideoが返るので、 結局どちらのピンかわかりません。(両方が存在するので当たり前ですが) ※m_pOutputAudio,m_pOutputVideoはフィルタ作成時に作られます。 どうしたらよいですかね…
447 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 14:59:29 ] >>446 if (pOutputAudio == this) { //オーディオピンの処理 } else { //それ以外 }
448 名前:448 [2007/04/11(水) 17:09:38 ] >>447 参考にします。 フィルタのGetMediaTypeでピンを判別するから良くなかったみたいです。 フィルタのGetMediaTypeは、出力ピンのGetMediaTypeからコールされるので、 出力ピンのGetMediaTypeでどっちのピンか判断し、それを記憶しておくことにしました。 CSplitterOutputPin::GetMediaType() { if(0==lstrcmpW(this->m_pName, L"Audio")){ //フィルタのメンバ変数にオーディオだと記憶させる。 m_pSplitterFilter->m_bOutputPinAudio=true; } else{ //フィルタのメンバ変数にビデオだと記憶させる。 m_pSplitterFilter->m_bOutputPinAudio=false; } return m_pSplitterFilter->GetMediaType(); } ↑のようにして、フィルタのGetMediaTypeでは、m_bOutputPinAudioを見て、 オーディオ、ビデオの設定をするようにしました。 一応接続はこれで上手くいきました。何かとても簡単な質問をしてしまった気がしますが…
449 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:36:27 ] 1500円の2割引はいくら? 時速80km/hで走る車が1時間何キロ走る? ・・・ポカーン
450 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:29:28 ] ⊂⊃ ★ ∧η∧ \_(,,・Д・)<1500円の2割引きは計算不能だぞ。俺の脳が再起不能(リタイア)したぞ。 ヽ |フ 時速80kmでオレは走れないので1時間も車を見張れないぞ! /_ _| 果てしなく遠くが答えだぞ。
451 名前:デフォルトの名無しさん [2007/04/19(木) 06:23:08 ] 都合でDirectshowを使い始めることになりました初心者です。 Webカメラで取った映像を扱いたいので、SDKにあるAMCapを参考に機能を探しているのですが キャプチャした動画をaviではなくmpeg1等で圧縮して吐き出したいのですが フィルタを何処の関数で挟めばよいのでしょう。 あと、映像のガンマや彩度等がプロパティで調整できてしまいますが、これはなんのフィルタを使用しているのでしょうか? 初心者質問すいません。
452 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 07:35:23 ] >>451 プロパティはソース見りゃわかるんじゃない。 以下推測 色調節のフィルタが存在するのではなくて キャプチャデバイスやそのピンのプロパティじゃないのか。 Webカメラのデバイスドライバが変わればその機能も変わる。 MPEG-1エンコーダって標準装備か? 俺持ってない。存在しないフィルターは使えんよな。
453 名前:デフォルトの名無しさん [2007/04/19(木) 07:54:41 ] 沖縄県の方へ(命に関わる注意事項です) 沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。 民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄」等で検索をお願いします。 この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから… ※一国二制度 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。) さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。 そして中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。 今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。 自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。 発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
454 名前:451 [2007/04/19(木) 14:09:38 ] >>452 えっと、回答ありがとうございます。 トライ&エラーしながら死んでおります。 >色調節のフィルタが存在するのではなくて >キャプチャデバイスやそのピンのプロパティじゃないのか。 ...確かに、自宅で違うWebカメラで試したときは、設定ダイアログの内容がぜんぜん違っていましたね。 >MPEG-1エンコーダって標準装備か? もう一度探しなおしたデコーダーだけで、エンコーダーはありませんでした。死んできます。 aviだと保存するにも重いから、実用的なサイズに直して自動保存しておいてって言われたんですが、asfかモーションJPEGかDVか、しか使えないのかな? まぁ、いくらか頑張ってみます。
455 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 21:04:09 ] TMPEGEnc買っちゃいなYO!
456 名前:デフォルトの名無しさん [2007/04/19(木) 23:22:24 ] >>455 GRAPHEDTがあれば買わなくてもいいな俺は。 >>454 MPEG4のコーディック2なら標準装備であるよ。 GraphEdtで↓な構成を書いてみるよろし 「WebCam」→「MPG4Codec2」→「AUXMix」→「FileWriter」 んで「WebCam」のPinプロパティを開いてみる 自分の思った通りに出来る場合 ⇒そのままコーディング 自分の思った通り出来ない場合 ⇒出来る方法を模索 をやっといた方がはやい
457 名前:454 [2007/04/20(金) 10:39:55 ] どうもです、回答ありがとうございます。 一応あの後がんばった結果、DV形式とモーションjpegでは圧縮に成功しました 「うーん、なんかサイズ大きいね。asfで圧縮できない?」 といわれたわけで、メディアフォーマットSDKを読んで泣いています。 小さければ文句言われないのでmpeg4の方が楽かもしれません。 なんか進歩日記みたいになってすいませんが...。
458 名前:デフォルトの名無しさん [2007/04/20(金) 20:55:50 ] >>457 御礼を言うのは大変素晴らしいが、どこまで書いたことを理解できたのか 解るように(回答が的外れでなかったか知りたい) 内容についても一言触れて欲しかったな と、会社では立場が最下層回答者の愚痴。
459 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:39:00 ] 最後志貴の方、速度で無い中、対戦お疲れ様でした。 飯食うので、この辺で。
460 名前:デフォルトの名無しさん [2007/04/20(金) 22:14:15 ] あ、はい。もうなんか恥ずかしいですがこの際だから正直に言います。 >GraphEdtで↓な構成を書いてみるよろし >「WebCam」→「MPG4Codec2」→「AUXMix」→「FileWriter」 ここらへんから実は分かっていません。 GraphEdtは分かるのですが、圧縮用のcodecをどう呼び出せばいいのか… directshow標準のDVだと CoCreateInstance( CLSID_DVVideoEnc, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pDvFilter); と書いたら作れたんだけど、標準外のものはクラスIDを何処で知れば良いんだと悩んでおりました。 そこで摘んだのでasfでの圧縮を模索したのですが、なかなか動くコードにならないで今日が過ぎていきました
461 名前:デフォルトの名無しさん [2007/04/20(金) 22:51:49 ] >>460 ふむ。成る程。 GraphEdtでのフィルタ登録の操作の仕方なのかそれをコーティングするときの方法なのかわからんです。 Clsid(クラスIDの事ね)がわからないと言ってるから↓↓がわからんのでは?? >自分の思った通りに出来る場合 ⇒そのままコーディング ClsidはGraphedtでフィルタ登録する時に表示されてるよ。 それとも「Graphedt.exe」のアプリを「フィルタグラフ」(コーティング上の概念)と勘違いしてるのかなぁ…
462 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 23:07:45 ] asfはWM ASF ライターを登録して入力ピンにつないでやるだけだから 圧縮コーデックの列挙が必要なavi再圧縮に比べたらよっぽど簡単だよ。
463 名前:460 [2007/04/21(土) 06:14:41 ] これは直にソース出してみた方が良さそうなので。 以下asfの書き出しの部分です。(短くするためにエラー処理省略です IBaseFilter *pAsfFilter; hr=CoCreateInstance(CLSID_WMAsfWriter, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pAsfFilter); hr = gcap.pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, L"cccc.asf", &pAsfFilter, &gcap.pSink); hr=gcap.pFg->AddFilter( pAsfFilter, L"asf filter" ); pAsfFilter->Release(); hr = gcap.pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, gcap.pVCap, NULL, pAsfFilter ); このコードだとファイルの書き出しはしてくれるんだけど、何故か無圧縮aviが出力される。何ででしょうね… > ClsidはGraphedtでフィルタ登録する時に表示されてるよ。 Gapheditでフィルタ選択したときに出るDisplayNameの、 {ランダムな文字} の間の部分って事ですね。 多分理解しました。
464 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 12:37:04 ] MEDIASUBTYPE_Aviだからじゃねーの?
465 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 13:49:11 ] >>463 ちゃんとMSDNでリファレンス見てから書いたほうがいいよ。 CoCreateInstanceでCLSID_WMAsfWriter作らなくても SetOutputFileNameが作ってpAsfFilterに入れてくれる。 msdn2.microsoft.com/en-us/library/ms779904.aspx msdn2.microsoft.com/en-us/library/ms784861.aspx
466 名前:460 [2007/04/23(月) 04:44:00 ] お返事が送れて申し訳有りません。 一応頂いたアドバイスからちまちまと頑張っております。 >>465 hr=CoCreateInstance(CLSID_WMAsfWriter, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pAsfFilter); hr = gcap.pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, L"cccc.asf", &pAsfFilter, &gcap.pSink); 上2行からCoCreateInstance関数でのインターフェースの取得をやめて、メディアサブタイプをMEDIASUBTYPE_Asfに改めたのですが、何故かエラー。 どこかまだ問題があるのかも知れません。 というわけで、他のcodecに逃げる方に切り替えて、Graphedit.exeを弄りながらクラスIDを探したのですが書いたグラフをGRFファイルで書き出して、無理矢理テキストエディタで開いたら、それらしいクラスIDがあったので キャプチャカード -> ffdshow -> File Writer とフィルタを繋いだ所、無事に書き出しに成功しました。 サイズ的には納得してもらえそうな所にまぁ、落ち着きました。 フォーマットがXViDですが、あはは…。 > >>454 > MPEG4のコーディック2なら標準装備であるよ。 そこなのですが ・MPG4Codec2 ・AUXMix の2つのフィルタがちょっと見たりませんので上の様に逃げています(汗 探し方が足りないのかな? とりあえず、相手に見せてみます。ありがとうございました。 まだ格闘しなければいけないところがあるので、ほとほと困ったらまた来るかもしれません。
467 名前:デフォルトの名無しさん [2007/04/25(水) 16:01:46 ] 以前に出力ピンが2つある場合の出力ピンの区別のことで質問させてもらったのですが、 スプリッタの2つの出力ピンからデータを出力するようにしました。 が、再生すると何も表示されません(音も映像も)。 一方の出力ピンだけ接続し、もう一方の出力ピンは未接続の状態にすると再生はできます。 しかし、オーディオ、ビデオ両方を同時に再生しようとすると、どちらも 再生されなくなります。 原因は何が考えられるでしょうか。
468 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:15:00 ] それはただのバグっぽいぞ・・・ 各ピン(のインタフェイス)は別々のスレッドから呼ばれる可能性があることを ちゃんと考慮した作りになっているか、デッドロック等はないか、など考えてみるべき。 あと「再生されません」ではなく、グラフのステートが再生状態になるのかならないのか、 なる場合には停止で止まるのか止まらないのかなど、プログラマらしい情報の出し方を
469 名前:467 [2007/04/25(水) 19:34:56 ] >468 もともと1つの出力ピンのソースに、無理やりもう1つの出力ピンを 追加したのが問題かもしれません。 基本的にm_pOutput(元々あった出力ピン)が出てくるところに、 もう1つのピンの処理を追加したような感じです。 >あと「再生されません」ではなく、グラフのステートが再生状態になるのかならないのか、 >なる場合には停止で止まるのか止まらないのかなど、プログラマらしい情報の出し方を すみません、情報不足でした。GraphEditで確認しているのですが、 再生ボタンを押した後、再生状態にはなっているようです。 しかし、停止ボタンを押すとフリーズし, The graph was unable to complete pause within 10 seconds.〜 という警告がでる状況です。
470 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:37:18 ] deliver で送るプッシュ型のピンですよね。 2つある場合はそれぞれ別のスレッドで動く必要がありますが、 そのあたりは問題ありませんか?
471 名前:467 [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:15:13 ] ビデオレンダラにつながっているピンのReceiveが時間調整のためにブロックすると、 オーディオレンダラにつながっているピンにもデータが来なくなるので、 時間が進まなくなって永遠にブロックするという動作。 出力ピンをCSourceStream から派生させて実装するのが base classes 的には常道。 パースしたビデオ、オーディオのデータをそれぞれのピンの中の Queue (自分で作ること) に入れておいて、FillBuffer で Queue にあるデータをもとにメディアサンプルを作る。 個人的にはスプリッタを作るなら、ソースフィルタのサンプルコードをもとにして 出力ピンと入力ピンを追加するのが簡単だと思う。
473 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:19:57 ] 質問です、Direct3Dで、ゲーム中のテクスチャに動画ファイルの映像の ビットマップを入れ、音声もゲームのカメラ位置に従って右の方にあれば 右寄りの位置から聞こえてくるようにしたいのですが、 とりあえず入門にあるようなSampleGrabberを使う方法ではなく RendererFilterを継承するのが正解なのだろう、というところまでは わかったのですが、フィルタを継承して自前で書くのにstreams.hとやらが ありませんでした。Windows2000ではWindowsSDKがインストールできないので 迂回策を探しています(ちょっと前のPlatformSDKには入ってませんでした・・)。 Windows2000上でフィルタを継承するようなコードを書いてる方は、 どのようにやっているのでしょうか? 他にも「別にRendererFilterを継承しなくてももっといいやり方がある」とか ツッコミがあればお願いします。
474 名前:473 [2007/05/08(火) 16:25:19 ] すみません、間違えてさげてしまったΣ ついでに訂正・・・ ×streams.hとやらがありませんでした。 ○streams.hとやらが必要みたいですが、ありませんでした。 何がやりたいかわかりやすく書くと、 ゲームの中のテレビに任意の動画を流したい、ということです。
475 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:11:28 ] >>473 D3Dのテクスチャに動画をレンダリングするのは、 SDKのサンプルにそのものずばりのがある。 DirectShow 関連のSDK が利用できないのであれば、 動画ファイルをWMVなりAVIで用意して、AVI関連APIや Windows Media Format SDKでデコードすれば良いと思う。
476 名前:473 mailto:sage [2007/05/08(火) 18:42:40 ] 回答ありがとうございます! >WMVなりAVIで用意して、AVI関連APIやWindows Media Format SDKでデコード なるほど!動画関連のAPIに詳しくなかったので盲点でした。 その辺はこれから調べようと思うんですが、一つ質問させてください。 >SDKのサンプルにそのものずばりのがある。 これなんですが、WindowsSDKのことでしょうか? 最初DirectXSDKのサンプルかと思ったのですが見当たらなかったので・・・
477 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:01:25 ] >これなんですが、WindowsSDKのことでしょうか? そうです。 Windows 2000 だと Windows server 2003 SP1 Platform SDK を利用することになります。 SDK の導入あたりから書かれたページを見つけたので読んでみてはいかがでしょうか。 ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=17
478 名前:デフォルトの名無しさん [2007/05/10(木) 01:38:59 ] DirectShowに足突っ込んで間もないのですが、質問です。 VMR9を使って動画の再生を行おうとしているのですが、動画の 元サイズとアスペクト比を取得しようと IVMRWindowlessControl9::GetNativeVideoSizeを使っているのですが、 このメソッドのセットする値が期待した値になりません。 long x, y; long aspx, aspy; HRESULT hr = pVMRWindowlessControl9->GetNativeVideoSize(&x, &y, &aspx, &aspy); このコードで720×480のmpeg2ファイルを読み込むと期待としては x = 720 y = 480 aspx = 4 aspy = 3 こんな感じになると思っていたのですが、実際は x = 720 y = 540 aspx = 720 aspy = 540 となってしまいます。元々のサイズとアスペクト比を取得したいのですが、 これではできません。他の方法があるのでしょうか? ちなみに、IBasicVideo2を使うとちゃんとできるんですよね。他の機能を実装 するためにVMR9を使わざるを得ないのですが・・・
479 名前:デフォルトの名無しさん [2007/05/16(水) 14:14:00 ] どうもすいません。 Webカメラから取った動画を保存できるようにプログラムを書いたのですが、そこまで完成したのを見せたところ。 「こんどはコレ再生して、再生時間を表示できるようにできないかな?」 と言われてしまいましたが、正直何を使って実現すれば良いかどうかから思い当たるところがありません。 そのインターフェースを使えばよいかどうかだけでも、教えていただけないでしょうか…。 IAMDroppedFramesあたりかな、とも思ったのですがいまいち思ったように動いてくれていません。
480 名前:479 [2007/05/16(水) 14:43:41 ] すいません。 先ほど、話をしなおしたのですが。私の勘違いがあって。 「Webカメラから取った動画」に「現在の時間」を残せないか?という要求でした。 具体的には動画の何処かの隅っこに、現在時間を画像として書き込んでしまうようなものを想像していたみたいです。 質問するのではなく、自前でフィルタを書くべきみたいですね。すいませんでした。
481 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 17:19:42 ] でも正確なキャプチャ時刻を得るのは難しいよな。 誤差が33ms以内とか
482 名前:デフォルトの名無しさん [2007/05/17(木) 00:56:53 ] あぁ。僕もそんな要望きたからやった。 単に秒まで出すだけならたやすい。 インプレイスフィルタが1番楽。次点は資料がたくさんあるトランスフォームフィルタ。 1・TranceFormメソッドをオーバーライド 2・IMediaSampleからDIBポインタをとる 3・DIB→デバイスコンテキストに変換 4・WinAPIのTextOutで文字書く 5・デバイスコンテキスト→DIB変換 たったこれだけでおk
483 名前:460 [2007/05/20(日) 19:49:18 ] ごめんなさい。弱音を吐きます。 結構頑張ったけど、2,3のステップの所のコードが作れません。
484 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 05:05:45 ] 時間でいいなら、必要な文字の画像を準備して、合成するだけでいいんじゃね? 厳密なアルファブレンドだと処理が重いから、切り抜き程度でいいと思う。
485 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:39:41 ] CreateDIBSectionとかググれ
486 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 15:14:30 ] >>483 客の要求仕様に基づいてプログラムを作ってるならしようがないけど、もしかすると 「>>460 が作業する工数 >>>>>>> 撮影時に時計を一緒に写す手間」じゃないか? もしそうなら道楽で予算を無駄遣いしてることになるから、正直適当なとこでやめて 本業に精を出した方がいいような気がする・・・
487 名前:483 [2007/05/21(月) 17:40:41 ] みなさん、ありがとうございます。 >>484 うん、最初にそんな感じのことを思いついて、ドット絵の様な汚い文字を無理やり表示させてみました。 どうしても気持ち悪いので、なんとかしたいですが、後回しかも…。 >>484 ヒントありがとうございます。 後日完成を目指すです。
488 名前:デフォルトの名無しさん [2007/05/21(月) 21:30:57 ] フィルタを作成しているのですが、リリースモードでビルドした場合に、そのフ ィルタを使用すると強制終了が起こってしまいます。 コンパイルエラーは出ません。 デバッグモードでビルドした場合は、問題は起こりません。 強制終了が起こる場所は、おそらくmallocをしているところだと思います。 正確にはmallocを使用している関数で落ちるのですが、その関数の内部は見えま せん。 デバッグとリリースで、mallocが使えないことってあるのでしょうか。
489 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:47:43 ] >デバッグとリリースで、mallocが使えないことってあるのでしょうか。 ありません。
490 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:24:02 ] GrapEditをホストにして普通にデバッガで追ってみれば?
491 名前:488 [2007/05/23(水) 00:27:49 ] 何かよくわかりませんが、msvcrt.libをリンクしないようにしたら上手く行きました。 どうもありがとうございました。
492 名前:デフォルトの名無しさん [2007/05/23(水) 08:32:54 ] >>460 よ フィルタを作るのが最善の解決方法かどうかまだ悩んでいるようだけど自分はそれが1番楽な方法だと思う。 俺はヒントというかフィルタの作り方手順を書いたものだが、手順2、3のどこがわからんのか明確化してくれ。 手順3については>>485 で調べられると思うけど
493 名前:483 [2007/05/24(木) 10:22:39 ] >>492 どうも、お手間をおかけして申し訳ありません。 インプレイスフィルタということで、SDKサンプルのEZrgb24を基本に作っておりました。 フィルタのTansform関数で、引数としてIMediaSampleを受けりますが これを ・DIB形式に変換 ・それをデバイスコンテキストの代入 のところで躓いておりました。 一応やっつけ実装で納得はしてもらったのですが、自分で恥ずかしいので、後で直したいというのが正直なところです。 若輩者で申し訳ありません。
494 名前:デフォルトの名無しさん [2007/05/24(木) 21:37:23 ] いや、俺も若輩ものだから…。楽なのはソースを渡して解析して貰う事なんだがな それすら今は体力的に自信ない
495 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:39:17 ] ちょっといいことを教えてあげよう。 EZrgb24ってさインプレイスフィルタじゃないお( ・ω・)∩ 違いはね。何のフィルタクラスを継承してるかで決まるんだ ちなみに「EZrgb24」は「CTransformFilter」を継承してるお
496 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 03:59:41 ] WinAPIのDIBってボトムアップ形式のみでなかった?
497 名前:デフォルトの名無しさん [2007/05/25(金) 08:12:46 ] ボトルアップってどういう意味? 座標原点の話しかな。DIBは他画像形式に比べると上下逆さまだけど、変換時にY座標をマイナス値を指定すればどうとでもなる
498 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 08:34:21 ] ボトムアップなら単語そのままの意味だが ボトルアップは飲み終わったボトルを投げ上げるという意味だな
499 名前:デフォルトの名無しさん [2007/05/25(金) 18:04:09 ] なるほど〜私はてっきりボトルを飲み干す事かとおもたよぉ〜 で、、意地悪しないでDIBのボトムアップを教えてくれ
500 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 23:13:53 ] >>497 でほざいていることがまさにボトムアップ つーかキーワードがこれだけでてんのに自力で検索くらいしようとは思わんのかね
501 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 23:26:22 ] ただ単にBITMAPの話じゃん 画像いじるなら基礎の基礎
502 名前:デフォルトの名無しさん [2007/05/26(土) 12:58:18 ] 自作ソースフィルタってどうやってフィルタグラフに追加するんですか? IGraphBuilder::AddSourceFilterを使ってもデフォルトのソースフィルタが呼ばれるし、 普通のフィルタ同様に、 CoCreateInstance&AddFilterすると、ソースフィルタに読み込むファイル名が指定できません。
503 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:01:49 ] >>500 >>496 の聞きたいことの意味がわからんかっただけで 俺は知ってるからおk。 今日はPCだからしらべてみたけど、ボトムアップという表現 はあんまり使われてないぞ?? ■Google調べ 「DIB ボトムアップ」検索結果 っミ【114件】
504 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:02 ] DirectShow スレということで、本家のDirectShowカテゴリ内のページ。 トップダウンとボトムアップの、メモリ上のピクセルの並びの違いについてごくごく簡単に説明している Top-Down vs. Bottom-Up DIBs ttp://msdn2.microsoft.com/en-us/library/ms787796.aspx サンプル画像のセンスの無さには相変わらず笑わせてくれる。
505 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:27:48 ] ありがとう。本家MSDNが使ってる言葉なのか 今後使っていくよ。 まぁBITMAPの仕様の話であって あんまりDirectShowとは関係ないとこで使うことになりそうだけど
506 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:32:32 ] >>502 ごめんボトムアップに気を取られていた 自作フィルタを登録する方法はコマンドラインから 「regsvr32 ぱす&自作フィルタ.ax」でレジストリ登録が必要です。 その後「Graphedt」でフィルタグラフに登録できることを確認するんだよ それでもできなかったらまた質問しましょう
507 名前:502 [2007/05/27(日) 02:21:11 ] >>506 すいません、説明不足でしたが、レジストリ登録、GraphEditでの確認は出来ています。 ただアプリケーションから自作ソースフィルタを使ってファイルを読み込む方法がわかりません。 GraphEditで追加したときは、読み込むファイルを聞いてくるのですが、アプリからソースフィルタを追加しても、ファイルを聞いてこないのです。
508 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:22:30 ] なるほど。 窓枠の提供はどこがやるの?って事だと認識しました。 自作ソースフィルタを「GraphEdit」で開いた場合、 ファイル選択ウィンドウはディスクトップ画面のド真ん中に出ますか? もし真ん中に出ない場合、「hWnd」をデスクトップから取っていないことになります。 アプリケーションから渡してやる(=ファイル選択ウィンドウを作って選択結果をフィルタに渡すような設計) にしてやる必要があるかと思います。 自作ソースフィルタのファイル選択ダイアログを出す部分のソースを晒せば解決できると思いますよ
509 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:26:48 ] ソースフィルタはIFileSourceFilterインターフェースを持ってるでしょ。 AddFilterした後でそれを呼び出して(QueryInterface)、Loadメソッドを 実行してやるんだよ。 でも、そんな基本的な所でつまずいてるのにソースフィルタ自作とかよく出来たな。
510 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 12:31:49 ] 手っ取り早くソース晒せといいたい
511 名前:502 [2007/05/28(月) 12:17:00 ] >>508 ,509,510 回答ありがとうございます。 >>509 まさにそれでした!ありがとうございました。 無知ですいません。
512 名前:デフォルトの名無しさん [2007/05/28(月) 18:24:46 ] 簡易動画編集のようなことをやるために、複数の動画ファイルを連結して1つのファイルにエンコードしようとしています。 いまのところ、ファイルごとに構築した再生用のフィルタグラフから静止画を取り込みまくって 録画用のフィルタグラフに流し込むやり方を考えているのですが、 こういうバカっぽいやりかたでなく、もっとエレガントな方法はないもんでしょうか。
513 名前:デフォルトの名無しさん [2007/05/28(月) 23:44:50 ] この辺を使ってビデオ再生やってます。 IGraphBuilder IMediaControl IMediaEventEx IVideoWindow IBasicVideo ビデオ再生自体は問題ないのですが、サウンドデバイスが複数 あった場合に、音声の出力先を指定するにはどうしたら良いで しょうか? 現状、Windowsの標準のサウンドデバイスのみ音が出ます。 よろしくお願い致します。
514 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:38:22 ] DirectShowを使わない
515 名前:デフォルトの名無しさん [2007/05/29(火) 03:07:01 ] ええええええ まじっすかあああ? DirectShowって使えねーなぁ!! ゴミじゃん。M$てめえやる気あんのか?殺すぞ
516 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:00:31 ] >>5 15 真偽の程が全く不明な一文にそこまで熱くなれるのもすげえな
517 名前:473 mailto:sage [2007/05/29(火) 14:57:28 ] かなり亀レスですみません、あまり作る暇なくて 少しずつやっていたんですが、出来ました。 教えていただいた ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=17 ↑ここと、あとはここのサンプルソース↓ ttp://www.greenwood.co.jp/~k-aki/article/directshow_movie/directshow_movie.html を見ながらやって作れました。 (下のURLのサンプルソースは、多分GraphEditで使えるようなDLLとして作るものではなく、 ほぼCBaseRendererを継承してメソッド書いてるだけだったのでわかりやすかったです) 色々ありがとうございました。次は音を取得するのに挑戦しまつ ヽ( `・ω・)ノ
518 名前:デフォルトの名無しさん [2007/06/01(金) 16:33:46 ] test
519 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:49:21 ] DirectShow編集サービスでWMV9のAVIファイル作ろうとしてるんだけど、 エンコードパラメータの設定がうまくできません。 IAMVfwCompressDialogsで出したダイアログだと、変更が反映されないし。 かといってWMV9フィルタの出力ピンからIAMStreamConfigをqueryしてGetFormatするとエラーになります。 AviUtilだとうまくやっているみたいなんですが、やり方が間違ってるんでしょうか・・・
520 名前:デフォルトの名無しさん [2007/06/10(日) 04:56:19 ] __ /:::::::::::::`ヽ_ _ n /::::::::::::::::::::::::::l l L_ ,─' ヽ_ _|::::::::::::::::::::::::/) / _彡__ 三_ ヽ、 l/::::::::::::::::::::::::ヽ / ∠, - 、:::::::\ `丶、 `/::::ノT` ^ 'l´l:::::|´ /(・|・)) |::::::::::::ヽ `ヽW ̄  ̄W /ヽ、_●_/ \::::::::l `1 l ヽ /'´`\_|__三、ヽ::::| l / / | __ | l:::l l |__\( ヽ-'"´) //:/ / , |::::::::::ヽニ二二ニ_∠_'/__ | l /つ 、/(〒) ヽ::::::::::::::::::
521 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:23:28 ] すいませんが教えてください。 この↓を参考にしてMFCで動画再生アプリを作っているのですが、 ttp://www.geekpage.jp/programming/directshow/setnotifywindow.php DirectShowで動画再生しているウインドウが、別のウインドウの陰に隠れてから 手前に表示されたときなどに再描画されません。 再描画するにはどうすればいいですか?
522 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:34:50 ] ビデオウインドの親ウインドでWM_ERASEBKGNDをDefaultWindowProcに渡さない。
523 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:50:53 ] >>522 できました。ありがとうございます
524 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:13:25 ] まさかだが、>>520 は DirectShow にかけたネタなのか?
525 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:36:29 ] どらえもんだとおもいます
526 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:43:54 ] 直見せというか、モロダシ?
527 名前:デフォルトの名無しさん [2007/06/12(火) 07:31:58 ] ドラえもんShoWです。 スマンむしゃくしゃしてやった。 今は反省してる
528 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 10:11:14 ] 静ちゃん・・・
529 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 21:39:31 ] 静ちゃんは原作名だよね。 原作も途中からアニメに合わせて「しずかちゃん」になってる。 最近にふにふ動画やようつべを見てるんだけどフレームレート変更フィルタ作れば「速聞」みたいなサービス作れるかな
530 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 21:49:48 ] 最近ようつべてw いつの人間だよ
531 名前:デフォルトの名無しさん [2007/06/14(木) 01:02:27 ] 新しいほうがいいにきまってる ::::::::::::::::::::::::::::: ,.-ヽ :::::::::::::::::::::: ____,;' ,;- i へ、 /;へ\ :::::::::::::::::: ,;;'" i i ・i; // _l::|___l::|_ヽ:ヽ ::::::::::::::: ,;'":;;,,,,,, ;!, `'''i; / ̄ ̄ ̄ ̄\,, |l/−、 −、:::::::::::::::`::| ::::::::::: ,/'" '''',,,,''''--i / __ヽ /::::::| ・|・ | 、::::::::::::::\ ::::::::: ;/ .,,,,,,,,,,,,,,,,, ;i'⌒i; | | |、 /::/ `-●−′ \:::::::::::ヽ ::::::: i;" ___,,,,,,, `i". | ∩─| | ,|/ ── | ── ヽ:::::::::| ::::::: i; ,,;'""" `';,,, "`i; | ∪ `l |. ── | ── .|::::::::| ::::::: | ''''''i ,,,,,,,,,, `'--''''" ヽ __/ _.ノ | ── | ── |:::::_l__ ::::::: |. i'" "; |――― 、". ヽ (__|____ /::::| 新 | ::::::: |; `-、.,;''" /  ̄ ̄ ̄ ̄^ヽ∞=、 \ /:::,/| 品 | :::::::: i; `'-----j | | | |っ:::::) l━━(t)━━━━┥ |___|
532 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 00:31:23 ] Platform SDK インストールしたけど、GraphEdit入ってなかった
533 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 06:58:35 ] >>532 C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\graphedt.exe
534 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 14:14:45 ] カメラって暗くなると露光を変化させるためにフレームレートがころころかわるやん? フレームレートを一定にするフィルタを作った人いる?
535 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 15:54:38 ] >>533 あ、あった。さんきゅー スタートメニューにショートカット作ってよねー
536 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 16:27:00 ] フレームレートがころころ変わる??
537 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:43:24 ] >>536 うん。そのカメラの最低露光付近で以下を調べる 「カメラ」-「レンダラ」 の接続で「レンダラ」のプロパティ「品質」タブ 平均フレーム率が明るさで変化するのがわかるよ
538 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:51:45 ] 操作説明する前に何の設定をしている場面なのかを言ってくれ 我々はエスパーじゃないんでね
539 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 02:49:07 ] 確かにそういうカメラもあったような気がする。 っていうか安物のカメラは結構フレームレートいい加減だったりする
540 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 02:58:43 ] >>537 「そのカメラ」ってどのカメラよ?
541 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 03:47:55 ] つかカメラやらタブやら、話が唐突すぎるし悪文だしで理解不能
542 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:57:09 ] プロパティ「品質」タブってグラフエディットでの話か? だとしたらあれはソースそのもののフレームレートではないよ? 俺ならよくわからん糞カメラだけのためのフィルタなど作る気にはなれないな
543 名前:デフォルトの名無しさん [2007/06/17(日) 16:58:49 ] まあ作ってやってもいいが、ここから先はビジネスになるよ
544 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 17:22:39 ] たぶんグラフエディットのことだろうね。 ところでソースそのもののフレームレートじゃないっていうのはどういうこと? レンダラが捨てるって事?
545 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:00:33 ] >>543 まじで?たのむ っI >>544 ソースフィルタが一定間隔に絵を出してこなくなるということだよ レンダラが捨てるわけではないみたい
546 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:32:00 ] >>545 >ソースフィルタが一定間隔に絵を出してこなくなるということだよ >レンダラが捨てるわけではないみたい つまりソースフィルタが実際に出力しているフレームレートだよね。 それが明るさで変動するね、って話だったと思うんだけど。
547 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:12:30 ] >>546 うん。その話です。 私は「フレームレートを一定にするフィルタを作った人はいますか?」 という質問をした者なんですが、 暗いときに光を映す場合、フィルムに光を取り込む時間を長めに 取ってやる必要があります。ちゃんとした画像を取り込むのと シャッタースピードはトレードオフ関係になるのかと思います。 一般的なカメラは上記を自動で行っているので周囲の明るさが変化すると フレームレートがころころ変わっていく・・・と思っています。 これを時系列処理が必要なフィルタに通した場合問題がおきるので、 フレームレートを一定にするフィルタが必要なのでは?と考えています どなたか作成した人はいらっしゃいませんか?
548 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:21:29 ] >>544 メディアタイプとしてののフレームレートってことだとおもう。 レンダラのレートはレンダラが表示できてるレートってことじゃね? デコーダがうんこだったりPCすぺっくがうんこだと激低かと
549 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:26:05 ] カメラって何だ?デジカメ?かむコーダ? 記録するフォーマットは何よ?グラフ構成は?DirectShow経験有り? 出すべき情報が出てない感じ。
550 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:36:52 ] >>549 カメラ・・・USBカメラ(Qcam)を想定していただければいいです 記録フォーマット・・・なし。記録してもしなくてもよし。 グラフ構成・・・ソースフィルタのみ。 ただ、見るために「ソース」-「レンダラ」でお願いします Directshow経験・・・およそ3ヶ月。画像関係の変換フィルタ作成ならわかるくらい >>548 PCスペックが悪くてフレーム落ちすることはこの際無いという前提でお願いします >>538->>548 「ソースフィルタのフレームレートが外光によって変化すること」 に話の争点がいっていますが、できれば 「フレームレートを一定にする変換フィルタ」についての事を話したいです。
551 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:48:10 ] そのカメラが本当に正しい絵を取るために露光時間を調節しているのかどうかは不明だが 本来なら正しいレートでがんばって出すべきだと思う(この辺はMSがどう設計しているのかによるが。) で、そのメーカのソースフィルタがそう実装されてないから後ろでなんとかしましょう、ってことですね? (Qcamって路地クールのやつでしょ。あれはなんかキャプチャした絵を解析しているっぽいから感光待ちじゃないような希ガス) どっちかっていうとそのカメラのソースフィルタの性能の問題、あるいはバグに近いので そもそも、それを正しくするフィルタの需要って無い気がする 自分もそういうフィルタはしらない。 でも一般化して「レートを一定にする中間フィルタ」という意味では需要もあるかもしれないね。
552 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:51:12 ] タイムスタンプチェックしてバッファしておいた前回映像を投げてやれば良いような気もするが グラフ構成ソースフィルタのみ??ダウンストリームが無いのに変換フィルタ?? うーん 何がしたいのかますますわかんねーな… [ソース]-[レンダラ]はダイレクトで繋がるの?メディアタイプはRGB? 本来期待されるべきフレームレートはいくつですか? ソースが吐き出すタイムスタンプ確認してみた?てんでバラバラの間隔だったのかな
553 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 20:24:27 ] >>552 ご回答ありがとうございます。 「タイムスタンプにて・・・の件」 DirectShowのフィルタ同士の動きはイベントドリブンです。 なので、スレッドを立てて別レートで処理するシステムを考えました >「ソースフィルタ」-ここ6fps-「レート安定フィルタ」-ここ15fps-〜 私のコーディング技術の問題でレート安定フィルタ以降のアロケータを6fps以上で 使うとロックしてしまいうまくいきません。 >[ソース]-[レンダラ]はダイレクトで繋がるの? 繋がりますが私の想定する使い方とは若干違います。 カメラのフレームレートを争点にしていたのでこれを出しました。 本来使いたいのは 「ソース」-「時系列処理が必要なフィルタ」-「レンダラ」 です。 >メディアタイプはRGB? なんでもいいです。私の作ったフィルタは「RGB24」「RGB555」「RGB565」「IYUV」 「I420」のいづれかを想定して設計しております。 >本来期待されるべきフレームレートはいくつですか? 固定されていれば何でも。あえて決めるとすれば15fpsでよいです 6fpsのカメラであれば同じ画像を2.5回程度下流ストリームに投げるものでいいです >ソースが吐き出すタイムスタンプ確認してみた?てんでバラバラの間隔だったのかな う〜ん。どのカメラでやったか定かではないのですがQcamかbuffaloのカメラでは バラバラでした。自分でも少々不確定なので試していないということでお願いします
554 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:38:27 ] ちょっと前のFPS倍化の話と同じじゃん。 つーか、サンプルのレートばらばらでも動くように作れよ。
555 名前:デフォルトの名無しさん [2007/06/18(月) 22:19:44 ] VMR9でのデインターレースについて調べてるんですが、デインターレース について何も設定しなければ、デフォルトの設定でデインターレースが有効 なってるんでしょうか? テストプログラムで調べてるんですが、VIDEOINFOHEADER2のdwInterlaceFlags が必ず0になってるんで、デインターレースの設定のしようがないんですが・・・
556 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 14:35:18 ] >>555 >VIDEOINFOHEADER2 の dwInterlaceFlags が必ず0になってるんで 「なってるんで」ってのは意味不明だな。0 ならインターレース解除は行われない。 まともな MPEG2 デコーダーでインターレース物のファイルをデコードすれば 適当な値が入るはず。
557 名前:555 mailto:sage [2007/06/19(火) 16:38:40 ] >>556 そのメディアが確実にインターレースであると確認する方法がないんですよ。 (見た目ではインターレース縞は確認できるけど) 今、手元にあるDVD数種からVOBをそのままコピーして拡張子をmpgに変えて テストしてるんですが、InterVideo、Mainconcept、ffdshowどれも0でセット されてますね。InterVideoはデコーダがインターレース解除じているように 見えますけど。
558 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:10:25 ] ffmpeg でのビデオの設定で、インターレース解除はオフに(チェックを外す)、 出力で「オーバーレイミキサーを使用する」「ハードウェアインターレース解除」をオンに、と設定してみて。
559 名前:555 mailto:sage [2007/06/19(火) 18:07:20 ] >>558 ありがとうございます。ffdshowでそのような設定にしたところ、 dwInterlaceFlagsに0以外が設定され、VMR9初期状態のデインターレスモード がGUID_NULLから変化しました。何も設定しなくても、インターレース ストリームが繋がればデインターレースが有効になっていることが確認でき ました。「ハードウェアインターレース解除」をオンにするっていうのは レンダラーにインターレースストリームであることを通知するって意味 だったのね。(わかりにくい)
560 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:32:28 ] ハードウエアインターレース解除をONってのは ハードウエアでデインタレースするって意味だが。 あとオーバーレイミキサを使用したらVMR9はつながらないということはない?
561 名前:555 mailto:sage [2007/06/20(水) 00:51:24 ] >>560 VMR9に繋がってますねぇ。まあ、ffdshowのその設定のとこのバルーンヘルプを 見ると、VIDEOINFOHEADER2ヘッダを使用するかどうかって設定らしいので、 VMRと繋がるかどうかは関係ないんじゃないかな。 あと、ハードウエアインターレース解除をONにしないとdwInterlaceFlagsに0 を入れてくるので、VMRにハードウェアデインターレースさせるって意味みたいね。
562 名前:デフォルトの名無しさん [2007/06/20(水) 01:44:55 ] フリーMLの方にも同じ質問してない?あっちにも途中経過報告よろ。
563 名前:555 mailto:sage [2007/06/20(水) 02:45:26 ] >>562 あい、あっちにも報告します。 その後、ひとつ確認ミスがあったので、報告を。 InterVideoは自前でデインターレースしているのではなく、VMR9のデインター レースを有効にしているようです。InterVideoはなぜかデバッグモードでアプリ を起動すると、接続を拒否するようです。(デバッグトレースを見られるのが いやなのかな)それで、InterVideoが繋がってるつもりで、実はMaincncept が繋がっていたという落ちでした(^_^;)
564 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 00:45:35 ] qedit.hとvmr9.hは同居できないかもな。 vmr7.hとvmr9.hは同居できない。なぜなら前者はDirectX7に基づいていて、後者はDirectX9にもとづく。 そしてDirectX7と9は定義の一部が被るので一緒に使えない。 qeditもおそらく同じだろ。 と、さりげなくレスしてみる。
565 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 14:12:31 ] >>564 vmr9.h (+その他もろもろ)がインクルードされた後に、 #define _D3DRMOBJ_H_ #define __D3DRM_H__ #include <Qedit.h> でOK。
566 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:48:41 ] カメラで画像を取り込みながら、画像処理をしたいのですが、 これはDirectShowを使えば可能なのでしょうか? 具体的にいうとカメラから取り込んだ画像は、リアルタイムで画面に描画しながら、 ある間隔でその画像を取得して画像処理を行いたいです。 また、サンプルなどがあれば教えていただきたいです。
567 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:57:54 ] 可能だYO!サンプルはたくさんあるYO!調べろYO!
568 名前:デフォルトの名無しさん [2007/06/25(月) 12:04:22 ] まず、GraphEditで カメラ−画像変換フィルタ−VideoRenderer と繋いであげるといいと思うよ。 画像変換のフィルタは標準では入っていないので、SDK付属のサンプルをビルドしてOSに登録してあげてください。 個人的にはEZrgb24フィルタがお勧め。 VideoRendererはDirectShowフィルタとして標準で入っているので、探してください。
569 名前:デフォルトの名無しさん [2007/06/25(月) 22:59:28 ] フィルタを開発するのに、ある時間の映像を静止画として、メモリに保存しておいて その画像と現在の画像の差分を出力したいのですが、メモリ上にコピーを保存するコードが分からないのですが 似た様な事を昔やった方や、やり方分かる方いらっしゃらないでしょうか?
570 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:05:00 ] 単に必要な分だけバッファ確保すればいいんちゃうの?
571 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:53:20 ] EZrgb24 フィルタを改造して映像に文字を表示するフィルタを作りたいんですが, どのような手順を踏めばいいのでしょうか? CEZrgb24::Transform(IMediaSample *pMediaSample) 関数を改造して, 1) CreateDIBSection() で DIB 作成 2) TextOut() で表示 で試したんですが,文字が表示されませんでした…. AM_MEDIA_TYPE* pType = &m_pInput->CurrentMediaType(); VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pType->pbFormat; HDC hDC = GetDC(NULL); HDC hdcMem = CreateCompatibleDC( hDC ); // メモリDC を作成 ReleaseDC( NULL, hDC ); void* lpRGB; HBITMAP hDIB = CreateDIBSection( hdcMem, (BITMAPINFO*)&(pvi->bmiHeader), DIB_RGB_COLORS, &lpRGB, NULL, 0); // hDIB は NULL ではありませんでした. このように pvi->bmiHeader から DIB を作成しているんですが,ここが間違っているんでしょうか?
572 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 04:21:27 ] すいません,どうやら非常に恥ずかしい間違いをしていたようです…. このやり方が標準的なのかは分かりませんが,以下のコードで無事表示できました. int nPicels = pvi->bmiHeader.biHeight*pvi->bmiHeader.biWidth; int nDataSize = nPicels*pvi->bmiHeader.biBitCount/8; void* lpRGB; HBITMAP hDIB = CreateDIBSection( 0, (BITMAPINFO*)&(pvi->bmiHeader), DIB_RGB_COLORS, &lpRGB, NULL, 0); if(hDIB && lpRGB) { memcpy(lpRGB, pData, nDataSize );// DIB array を映像で初期化 HDC hdcMem = CreateCompatibleDC( 0 ); // メモリDC を作成 HBITMAP hOldBMP = (HBITMAP)SelectObject(hdcMem, hDIB); // メモリDC にビットマップを選択 char szText[256] = "Test string"; TextOut( hdcMem, 0, 0, szText, strlen(szText)); SelectObject( hdcMem, hOldBMP); DeleteDC( hdcMem ); // メモリDC 削除 memcpy( pData, lpRGB, nDataSize );//BMP を書き戻す. DeleteObject( hDIB ); }
573 名前:デフォルトの名無しさん [2007/06/26(火) 19:11:56 ] Transform(IMediaSample *pMediaSample) で pMediaSample->GetSize(); と pMediaSample->GetActualDataLength(); を実行して、メディアのデータサイズを取ったら、どちらも0が返ってきたのですが これって、何かの使用ですか?
574 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:27:55 ] DirectShow のサンプルをみてると JIF, LIF マクロがよく使用されてますが, 機能や使用目的はわかるんですが,これは何の略なんですか? どうにも気になるんで御教示下さい.
575 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:47:29 ] Jump If Failed Leave If Failed
576 名前:デフォルトの名無しさん [2007/06/28(木) 16:02:20 ] >>575 げ、これマジなの??
577 名前:574 mailto:sage [2007/06/28(木) 17:09:12 ] >>575 有難う御座います.一応ググってみたら LIF の方は Log-If-Failed のようですね. 何はともあれ助かりました.
578 名前:デフォルトの名無しさん [2007/06/28(木) 17:11:13 ] >>577 なら書き込む前にググれよ・・・ それってすげーたち悪いぞ
579 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:13:43 ] 代わりにググってくれ、という書き込みだったのに ググってくれなかったから、しかたなく自分でググリました、とさ
580 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:16:27 ] ( ´_ゝ`)フーン
581 名前:574 mailto:sage [2007/06/28(木) 17:52:42 ] 失礼,JIF, LIF macro でググっても関係無いページばかりヒットしてしまい, わからなかったので質問しました.
582 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:23:23 ] 失礼、すまんかった
583 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:20:37 ] Return-If-Failed、てのがあっても良いような
584 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:07:33 ] DirectShowのサンプルではこんなの使ってるな。 #define FAIL_RET(x) do { if( FAILED( hr = ( x ) ) ) \ return hr; } while(0)
585 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:11:06 ] >>584 やっぱりあるのか・・FAIL_RETか つかそのマクロの使い方はあれだな、VC6の時のforみたいだな
586 名前:デフォルトの名無しさん [2007/06/29(金) 11:51:22 ] DirectShowでBGMを、DirectSoundで効果音を出そうとしています。 DirectSound側で、IID_IDirectSoundNotifyを用いると、ターゲットのリンク時に 関数が重複しるぞ、ゴルァと言われてしまいます。 リンクしているのは以下のライブラリ dsound.lib dxguid.lib uuid.lib strmiids.lib dxguid.libを抜けば、IID_IDirectSoundNotifyのみ見つからないという状態に なるので、これを使わないコードにすれば良いという話もあるのですが、うまく 共存させる方法はないでしょうか。ご教授お願いします。
587 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 09:29:53 ] CComPtr を std::vector に入れても大丈夫? std::vector< CComPtr<IMoniker> > vtIMonikerArray; というふうに使いたいんだけど,std::auto_ptr をいれるときのような問題はありますか?
588 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:15:08 ] >>587 少なくともauto_ptrのような問題が起きることはない 安心して突っ込みたまえ
589 名前:587 mailto:sage [2007/06/30(土) 21:11:13 ] >>588 ありがとう,やってみます.
590 名前:デフォルトの名無しさん [2007/07/05(木) 09:35:54 ] 再生レートを設定できるようスプリッタにIMediaSeekingを実装したのですが、 実際にアプリから使用してみると、SetRate(8.0)のように高いレートを設定すると エラー0x8004025cが返ってきます。 スプリッタ内部のSetRateでは、レートの制限をつけていないのですが、 どうしてかわかりますでしょうか?
591 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:35:20 ] たぶんオーディオレンダラだな。
592 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:31:42 ] 現在、プログラムを全画面モードで動作させ、そこからムービーを再生(全画面)しようと しているんですが、なぜかムービーウィンドウがトップにならず、 プログラムウィンドウの裏にまわったりして、きちんと再生されません。 VideoWindowはトップにくるように命令を入れてるんですが、きちんと機能していないみたい。 どなたかご指導お願いします。 // 自前のウィンドウにムービーを再生する pVideoWindow->put_Owner((OAHWND)m_hwnd); pVideoWindow->put_WindowStyle(WS_CHILD|WS_CLIPSIBLINGS); pVideoWindow->SetWindowPosition(0,0,800,600); pVideoWindow->SetWindowForeground(OATRUE); pVideoWindow->put_Visible(OATRUE); // ストリームの再生(グラフの実行) hRslt = pMdaCtrl->Run(); pMediaEvent->WaitForCompletion(15000, &eventCode);
593 名前:590 [2007/07/06(金) 09:52:06 ] >>591 オーディオレンダラをフィルタグラフから外すと成功しました。 ありがとうございました。 しかし、いちいち外したり、接続したりするのは面倒ですね。。
594 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 12:21:01 ] >>592 何再生してもそうなる? ビデオデコーダにDivX本家使うと、再生開始時に何かにアクティブ ウインドウ奪われちゃうって経験はあるけど。
595 名前:594 mailto:sage [2007/07/06(金) 12:35:38 ] >>592 それよく見たら、全画面表示するにはメインウインドウの子 じゃできないような。親をNULLにしたらいいんじゃない?
596 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 01:13:03 ] DirectShowで画像を回転させるフィルタでいいのない? 逆さ向けてビデオとってしまったんだorz
597 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 04:03:29 ] >>596 ワロタ てかその修正をフィルタに任せるなよw 動画編集ソフトで回転させるとか 動画を反転回転できるプレイヤー使うとかあるだろ
598 名前:592 mailto:sage [2007/07/07(土) 18:37:34 ] >>549 >>595 ご返事ありがとうございます。 >>594 再生しているmovieは特別なコーデックを必要としないので、違う原因かと思います。 >>595 親をNULLで再生すると、再生時にメインWIndowが最小化してしまい、全画面モードが 通常画面に戻ってしまいます。(movieは左上で再生) もうすこし詳しく症状を説明すると、まったく再生しないわけではなくて 成功・失敗をランダムで繰り返します。 成功すれば、メイン画面の前にVideoWindowが出て、普通に再生。 失敗すると、メイン画面の裏にVideoWindowがいるようで、音だけ再生。 このような感じになります。 色々とネット検索したところ、VideoWindowを再描画することで回避可能と見つけたのですが、 組んだところうまくいきません。(症状は同じ) HWND hChild = GetWindow(m_hwnd,GW_CHILD); InvalidateRect(hChild,NULL,true); うーん・・・
599 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:58:50 ] それは、親ウインドのバックグラウンド再描画で映像ウインドが消されてしまうからじゃないかな。 親ウインドのWM_ERASEBKGNDをDefaultWindowProcに渡さないようにして試してみな。 case WM_ERASEBKGND: return 0; でOK
600 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:54:57 ] >>599 ご返事ありがとうございます。 入れてみましたが、現状変わらずです。 元々WaitForCompletionで処理を止めている状態ならウィンドウメッセージが ムービー再生中に取れることも無いので、SetNotifyWindowでイベント登録 に切り替えてみましたが、やはり同じ状態です。 WaitForCompletionで再生しても裏に回った状態になるので、 WM_ERASEBKGNDを無視しても、同じ症状になるのだと思います。 再生中に定期的にInvalidateRectをVideoWindowに送ってもみましたが、 やはり裏の時は裏で再生されます。 うーむ、もう少し調べてみます。
601 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 14:11:52 ] 親ウインドは何? ダイアログ?それともダイアログに貼り付けたCStatic?
602 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 15:00:15 ] >>601 以下のスタイルで画面切り替え時にSetWindowLongしたものです。 WS_POPUP | WS_SYSMENU | WS_VISIBLE | WS_BORDER
603 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:36:06 ] WMPみたいな全画面をやりたいなら、普通にStayOnTopで画面いっぱいのサイズにするだけでおk。
604 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:01:24 ] >>602 ご返事ありがとうございます。 以下のような方法でVideoWindowにTOPMOSTを指定しましたが、 どちらも結果は変わらず、表に出たり裏に回ったりします。 1. pVideoWindow->put_WindowStyleEx(WS_EX_TOPMOST); 2. HWND hChild = GetWindow(m_hwnd,GW_CHILD); ::SetWindowPos(m_hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); うーん。
605 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:24:33 ] ふとスレ見直したんだけど、ownerじゃなくてparentでないのか? 窓の設定が間違っている予感。
606 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:35:11 ] もうDirectShow関係なくね?
607 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:47:08 ] >>605 ご返事ありがとうございます。 すいません、それは具体的にどのようにすればよいでしょうか?
608 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:17:56 ] Owner指定なしで、最大化はできんの?
609 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:57:40 ] >>608 Owner指定無しだと、元の全画面ウィンドウからVideoWindowに移る際に 全画面モードが解除されます。(Movieは左上で再生) これは、put_FullScreenMode()を実行しでも同じような動作になります。 通常画面からput_FullScreenModeをつかえば全画面でムービー再生してくれるのですが、 全画面モードから使うと、逆に全画面が解除されるようです。 うーん。
610 名前:599 mailto:sage [2007/07/08(日) 22:11:45 ] ウインド関係がよくわからない。 ビデオウインドの親ウインドは何? このウインドを仮にhParentとすると、 hParentウインドに親はいるのか?(or最初からWS_POPUP?)とか hParentウインドのスタイルにWS_CLIPCHILDRENは設定されているのか?とか hParentウインド自身は全画面サイズに引き伸ばされ、且つTopに表示されているの?とか hParentウインドのWM_ERASEBKGNDをちゃんと無視しているの?とか put_Ownerするタイミングとか そういうことが知りたい。
611 名前:592 mailto:sage [2007/07/08(日) 22:36:34 ] >ビデオウインドの親ウインドは何? CreateWindowしたWindowが親です。 >このウインドを仮にhParentとすると、 >hParentウインドに親はいるのか?(or最初からWS_POPUP?)とか 画面切り替え時にWS_POPUPとしています。 >hParentウインドのスタイルにWS_CLIPCHILDRENは設定されているのか?とか 指定していませんでしたが、元々メッセージ処理するつもりではなく、movie再生終了まで 処理停止するプログラムです。 pMediaEvent->WaitForCompletion(15000, &eventCode); // 15秒経過するかmovie再生が停止するまで待つ また、入れてメッセージ処理をするようにしましたが改善されませんでした。 >hParentウインド自身は全画面サイズに引き伸ばされ、且つTopに表示されているの?とか はい、全画面でTOPです。 >hParentウインドのWM_ERASEBKGNDをちゃんと無視しているの?とか これも前に書きましたが入れても改善されませんでした。 >put_Ownerするタイミングとか 基本は>>592 のソースですが、put_Visibleの直前まで、1行ずつ移動させても改善しませんでした。 また、その前にはVideoWindowの取得になるので移動できません。 こんな感じてす。何か判りますでしょうか。
612 名前:599 mailto:sage [2007/07/08(日) 23:12:43 ] この手の問題は大抵は、ビデオレンダラが描画したあとに親ウインドが背景をリフレッシュすることで発生する。 タイミングによってはリフレッシュが先に発生し、あとからビデオレンダラの再描画が行われ、表示される場合もある。 したがって親ウインドがある場合、親ウインドのWM_PAINTの描画処理をクリップして、且つERASEBKGNDをさせなければならない。 WS_CLIPCHILDRENやWM_ERASEBKGNDの処理を確実にしなければ効果がない。 ビデオレンダラの親ウインドにWS_CLIPCHILDRENをいれてみたらどうなる? もしダメならほかの理由かもね。
613 名前:592 mailto:sage [2007/07/08(日) 23:36:52 ] >>612 >したがって親ウインドがある場合、親ウインドのWM_PAINTの描画処理をクリップして、且つERASEBKGNDをさせなければならない。 >WS_CLIPCHILDRENやWM_ERASEBKGNDの処理を確実にしなければ効果がない。 WM_PAINTのクリップ、WM_ERASEBKGNDをDefに流さない、WS_CLIPCHILDRENを入れる。 全てやってみたんですが、やはりダメでした。 >ビデオレンダラの親ウインドにWS_CLIPCHILDRENをいれてみたらどうなる? 上でも描きましたが、入れてみても症状は変わらずです。 そもそもWaitForCompletionで、再生終了まで待つ処理でも症状がでるんですよね。 で、再生終了をイベント取得に切り替えて、PAINT処理を切ったりしてもやはり同じくだめでした。 うーん、タイミング問題だとは自分も思うんですが・・・。 もう少し調べてみます。
614 名前:592 mailto:sage [2007/07/09(月) 12:22:04 ] 皆さん色々と助言をありがとうございます。 すこし原因らしきものが見えましたのでご報告します。 メインWindowの描画にDirect3Dを使用しているんですが、 全画面モードで メイン画面の描画を一切やらない → 100%ムービー再生に成功 一度だけDirect3Dでサーフェイスのクリア → 表と裏のランダム再生 一度だけDirect3Dでメイン画面を描画 → 表と裏のランダム再生 どうやらDirect3Dのフロントバッファが問題を起こすようです。 引き続き対策を調べて見ます。
615 名前:592 mailto:sage [2007/07/09(月) 14:40:31 ] 結局、スマートな方法が見つからず、ムービー再生時には IDIRECT3DDEVICE9のリセットをおこなってから再生するようにした所 うまくいくようになりました。 おさわがせいたしました。 貴重なご意見をいただき、ありがとうございました。
616 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:26:34 ] なぜそんな重要なことを。。
617 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:31:05 ] Direct3Dということはゲームのムービーでしょうか?
618 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 10:40:38 ] 聞いてどうすんの
619 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:01:52 ] #include <qedit.h> と #include <d3d9.h> を一緒にするとエラーが出るんです。 順番変えてもエラーでます 対応策ってありますか?
620 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:16:28 ] 環境とエラー内容は?
621 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:28:13 ] 環境は、 VC2003で Microsoft DirectX 9.0 SDK Update (December 2004) だと思います。 #include <d3d9.h> #include <d3dx9.h> #include <dshow.h> #include <qedit.h> と書くと c:\DXSDK\Include\d3drmobj.h(46): warning C4005: 'WIN_TYPES' : マクロが再定義されました。 c:\DXSDK\Include\d3drmobj.h(274): error C2061: 構文エラー : 識別子 'LPDIRECT3D' ・・・ 等が出ます。 #include <dshow.h> #include <qedit.h> #include <d3d9.h> #include <d3dx9.h> と書くと c:\DXSDK\Include\d3dx9math.inl(1924): error C2039: 'm' : 'D3DXMATRIX' のメンバではありません。 c:\DXSDK\Include\d3dx9math.h(310) : 'D3DXMATRIX' の宣言を確認してください。 c:\DXSDK\Include\d3dx9math.inl(769): error C2065: 'm' : 定義されていない識別子です。 c:\DXSDK\Include\d3dx9math.inl(775): error C3861: 'm': 識別子は、引数依存の照合を使用しても見つかりません。 ・・・ 等が出ます。
622 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:51:17 ] >>621 d3drm〜ってファイル名から明らかだが qeditがDirectX7を使ってるからだろ? 一つのコンパイルパスにおいて複数のバージョンのDirectXは同居できない。 >>564-565 にズバリな事が書いているような気がするんだが、これは試したの?
623 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:53:34 ] ああ、違うバージョンのDirectX自体が同居できない訳ではないな。 ちょっと訂正
624 名前:619 mailto:sage [2007/07/10(火) 14:56:28 ] >>565 で通りました。 ありがとうございます><
625 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 15:08:21 ] 現行スレを検索することくらい、答える側にやらせないで自分でやれよ…ったく
626 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 16:02:52 ] うわ
627 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 16:42:41 ] まいったねこりゃ
628 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:27:39 ] まぁいいじゃん。過去ログにまさかズバリがあるとは思わないだろう。 ここ過疎気味だし。
629 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 06:48:47 ] YUVの4:2:2→4:4:4補間するDShowフィルタってあるんでしょうか?
630 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 07:02:28 ] ない
631 名前:629 mailto:sage [2007/07/11(水) 07:35:29 ] >>630 ありがとうございました!
632 名前:デフォルトの名無しさん [2007/07/11(水) 23:00:21 ] YUV422→444作れ。簡単だ。それが嫌なら500円くれたらやる。
633 名前:デフォルトの名無しさん [2007/07/12(木) 02:13:15 ] すいません、オーディオ、ビデオの2つの出力ピンのあるスプリッタを作成してるのですが、 2つの出力ピンともレンダラと繋いで、オーディオのみのファイルを再生すると、音声が流れません。 スプリッタのビデオ出力ピンを未接続にし、オーディオ出力ピンのみをレンダラと繋ぐと音声は再生されます。 ピンから出力データが無い場合に、そのピンを接続するのはいけないのでしょうか? 何とか、ビデオピンも繋いで、オーディオのみのファイルの再生をしたいのですが、 どうしたらよいでしょう?
634 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:01:04 ] PlatformSDK WindowsServer2003 R2をインストールしました ドキュメントにはサンプルのTextOutがさもあるように書いてあるんですが どこにあるかわかりません。 どこにあります? そのほかのサンプルもなんか無いんですが。。
635 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 16:06:44 ] それは古いSDKをとってこないと無いはず(DXSDKまで遡らないと無いものもあり)。
636 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 00:34:35 ] あ、そうなんだ。ありがとう。 ちょっくら探してきます。
637 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 19:51:58 ] 幼女と老婆を酷使する番組w
638 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 19:52:58 ] ↑ 間違えた。無視して
639 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 22:03:20 ] だが断る
640 名前:デフォルトの名無しさん [2007/07/17(火) 18:48:32 ] DirectShowはょぅじょとばばぁを酷使しますね。 フィルタをシェアウエアで出したいんだがいいとこある?
641 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 00:19:37 ] どんなフィルタ?
642 名前:デフォルトの名無しさん [2007/07/18(水) 12:24:38 ] たとえば >>401 の拡張したやつ 顔を検出するやつ 動物体を検知するやつ あとはサンプルグラバのこったやつ
643 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:49:33 ] パターン認識のフィルタならどっかになかったっけ?フリーで。
644 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:06:45 ] javaで顔認識で心霊写真チェッカーみたいなのがあったけどね。
645 名前:デフォルトの名無しさん [2007/07/18(水) 22:32:22 ] windows2000で最新のPlatformSDK入れたヤツ居る? BaseClassesをnmakeしようとすると makefile(53) : fatal error U1083: ターゲット マクロ '' が展開されません。 って出るんだけど・・・。
646 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:38:03 ] 複数のBMPから、AVIを作りたいなーと思って調べていたのですが、 DirectShowのフィルタを自作しなければできないのでしょうか??