[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 10:56 / Filesize : 216 KB / Number-of Response : 647
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DirectShowと戦うスレ Part 2



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を見て、
オーディオ、ビデオの設定をするようにしました。
一応接続はこれで上手くいきました。何かとても簡単な質問をしてしまった気がしますが…







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<216KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef