- 1 名前:デフォルトの名無しさん [2006/11/08(水) 00:25:56 ]
- 前スレ
pc8.2ch.net/test/read.cgi/tech/1026666092/
- 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 ]
- >>515
真偽の程が全く不明な一文にそこまで熱くなれるのもすげえな
- 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のフィルタを自作しなければできないのでしょうか??
|

|