07/06/17 19:36:52
>>549
カメラ・・・USBカメラ(Qcam)を想定していただければいいです
記録フォーマット・・・なし。記録してもしなくてもよし。
グラフ構成・・・ソースフィルタのみ。
ただ、見るために「ソース」-「レンダラ」でお願いします
Directshow経験・・・およそ3ヶ月。画像関係の変換フィルタ作成ならわかるくらい
>>548
PCスペックが悪くてフレーム落ちすることはこの際無いという前提でお願いします
>>538->>548
「ソースフィルタのフレームレートが外光によって変化すること」
に話の争点がいっていますが、できれば
「フレームレートを一定にする変換フィルタ」についての事を話したいです。
551:デフォルトの名無しさん
07/06/17 19:48:10
そのカメラが本当に正しい絵を取るために露光時間を調節しているのかどうかは不明だが
本来なら正しいレートでがんばって出すべきだと思う(この辺はMSがどう設計しているのかによるが。)
で、そのメーカのソースフィルタがそう実装されてないから後ろでなんとかしましょう、ってことですね?
(Qcamって路地クールのやつでしょ。あれはなんかキャプチャした絵を解析しているっぽいから感光待ちじゃないような希ガス)
どっちかっていうとそのカメラのソースフィルタの性能の問題、あるいはバグに近いので
そもそも、それを正しくするフィルタの需要って無い気がする
自分もそういうフィルタはしらない。
でも一般化して「レートを一定にする中間フィルタ」という意味では需要もあるかもしれないね。
552:デフォルトの名無しさん
07/06/17 19:51:12
タイムスタンプチェックしてバッファしておいた前回映像を投げてやれば良いような気もするが
グラフ構成ソースフィルタのみ??ダウンストリームが無いのに変換フィルタ??
うーん 何がしたいのかますますわかんねーな…
[ソース]-[レンダラ]はダイレクトで繋がるの?メディアタイプはRGB?
本来期待されるべきフレームレートはいくつですか?
ソースが吐き出すタイムスタンプ確認してみた?てんでバラバラの間隔だったのかな
553:デフォルトの名無しさん
07/06/17 20:24:27
>>552
ご回答ありがとうございます。
「タイムスタンプにて・・・の件」
DirectShowのフィルタ同士の動きはイベントドリブンです。
なので、スレッドを立てて別レートで処理するシステムを考えました
>「ソースフィルタ」-ここ6fps-「レート安定フィルタ」-ここ15fps-~
私のコーディング技術の問題でレート安定フィルタ以降のアロケータを6fps以上で
使うとロックしてしまいうまくいきません。
>[ソース]-[レンダラ]はダイレクトで繋がるの?
繋がりますが私の想定する使い方とは若干違います。
カメラのフレームレートを争点にしていたのでこれを出しました。
本来使いたいのは
「ソース」-「時系列処理が必要なフィルタ」-「レンダラ」
です。
>メディアタイプはRGB?
なんでもいいです。私の作ったフィルタは「RGB24」「RGB555」「RGB565」「IYUV」
「I420」のいづれかを想定して設計しております。
>本来期待されるべきフレームレートはいくつですか?
固定されていれば何でも。あえて決めるとすれば15fpsでよいです
6fpsのカメラであれば同じ画像を2.5回程度下流ストリームに投げるものでいいです
>ソースが吐き出すタイムスタンプ確認してみた?てんでバラバラの間隔だったのかな
う~ん。どのカメラでやったか定かではないのですがQcamかbuffaloのカメラでは
バラバラでした。自分でも少々不確定なので試していないということでお願いします
554:デフォルトの名無しさん
07/06/18 16:38:27
ちょっと前のFPS倍化の話と同じじゃん。
つーか、サンプルのレートばらばらでも動くように作れよ。
555:デフォルトの名無しさん
07/06/18 22:19:44
VMR9でのデインターレースについて調べてるんですが、デインターレース
について何も設定しなければ、デフォルトの設定でデインターレースが有効
なってるんでしょうか?
テストプログラムで調べてるんですが、VIDEOINFOHEADER2のdwInterlaceFlags
が必ず0になってるんで、デインターレースの設定のしようがないんですが・・・
556:デフォルトの名無しさん
07/06/19 14:35:18
>>555
>VIDEOINFOHEADER2 の dwInterlaceFlags が必ず0になってるんで
「なってるんで」ってのは意味不明だな。0 ならインターレース解除は行われない。
まともな MPEG2 デコーダーでインターレース物のファイルをデコードすれば
適当な値が入るはず。
557:555
07/06/19 16:38:40
>>556
そのメディアが確実にインターレースであると確認する方法がないんですよ。
(見た目ではインターレース縞は確認できるけど)
今、手元にあるDVD数種からVOBをそのままコピーして拡張子をmpgに変えて
テストしてるんですが、InterVideo、Mainconcept、ffdshowどれも0でセット
されてますね。InterVideoはデコーダがインターレース解除じているように
見えますけど。
558:デフォルトの名無しさん
07/06/19 17:10:25
ffmpeg でのビデオの設定で、インターレース解除はオフに(チェックを外す)、
出力で「オーバーレイミキサーを使用する」「ハードウェアインターレース解除」をオンに、と設定してみて。
559:555
07/06/19 18:07:20
>>558
ありがとうございます。ffdshowでそのような設定にしたところ、
dwInterlaceFlagsに0以外が設定され、VMR9初期状態のデインターレスモード
がGUID_NULLから変化しました。何も設定しなくても、インターレース
ストリームが繋がればデインターレースが有効になっていることが確認でき
ました。「ハードウェアインターレース解除」をオンにするっていうのは
レンダラーにインターレースストリームであることを通知するって意味
だったのね。(わかりにくい)
560:デフォルトの名無しさん
07/06/19 23:32:28
ハードウエアインターレース解除をONってのは
ハードウエアでデインタレースするって意味だが。
あとオーバーレイミキサを使用したらVMR9はつながらないということはない?
561:555
07/06/20 00:51:24
>>560
VMR9に繋がってますねぇ。まあ、ffdshowのその設定のとこのバルーンヘルプを
見ると、VIDEOINFOHEADER2ヘッダを使用するかどうかって設定らしいので、
VMRと繋がるかどうかは関係ないんじゃないかな。
あと、ハードウエアインターレース解除をONにしないとdwInterlaceFlagsに0
を入れてくるので、VMRにハードウェアデインターレースさせるって意味みたいね。
562:デフォルトの名無しさん
07/06/20 01:44:55
フリーMLの方にも同じ質問してない?あっちにも途中経過報告よろ。
563:555
07/06/20 02:45:26
>>562
あい、あっちにも報告します。
その後、ひとつ確認ミスがあったので、報告を。
InterVideoは自前でデインターレースしているのではなく、VMR9のデインター
レースを有効にしているようです。InterVideoはなぜかデバッグモードでアプリ
を起動すると、接続を拒否するようです。(デバッグトレースを見られるのが
いやなのかな)それで、InterVideoが繋がってるつもりで、実はMaincncept
が繋がっていたという落ちでした(^_^;)
564:デフォルトの名無しさん
07/06/22 00:45:35
qedit.hとvmr9.hは同居できないかもな。
vmr7.hとvmr9.hは同居できない。なぜなら前者はDirectX7に基づいていて、後者はDirectX9にもとづく。
そしてDirectX7と9は定義の一部が被るので一緒に使えない。
qeditもおそらく同じだろ。
と、さりげなくレスしてみる。
565:デフォルトの名無しさん
07/06/22 14:12:31
>>564
vmr9.h (+その他もろもろ)がインクルードされた後に、
#define _D3DRMOBJ_H_
#define __D3DRM_H__
#include <Qedit.h>
でOK。
566:デフォルトの名無しさん
07/06/24 17:48:41
カメラで画像を取り込みながら、画像処理をしたいのですが、
これはDirectShowを使えば可能なのでしょうか?
具体的にいうとカメラから取り込んだ画像は、リアルタイムで画面に描画しながら、
ある間隔でその画像を取得して画像処理を行いたいです。
また、サンプルなどがあれば教えていただきたいです。
567:デフォルトの名無しさん
07/06/24 17:57:54
可能だYO!サンプルはたくさんあるYO!調べろYO!
568:デフォルトの名無しさん
07/06/25 12:04:22
まず、GraphEditで
カメラ-画像変換フィルタ-VideoRenderer
と繋いであげるといいと思うよ。
画像変換のフィルタは標準では入っていないので、SDK付属のサンプルをビルドしてOSに登録してあげてください。
個人的にはEZrgb24フィルタがお勧め。
VideoRendererはDirectShowフィルタとして標準で入っているので、探してください。
569:デフォルトの名無しさん
07/06/25 22:59:28
フィルタを開発するのに、ある時間の映像を静止画として、メモリに保存しておいて
その画像と現在の画像の差分を出力したいのですが、メモリ上にコピーを保存するコードが分からないのですが
似た様な事を昔やった方や、やり方分かる方いらっしゃらないでしょうか?
570:デフォルトの名無しさん
07/06/25 23:05:00
単に必要な分だけバッファ確保すればいいんちゃうの?
571:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/26 19:11:56
Transform(IMediaSample *pMediaSample)
で
pMediaSample->GetSize();
と
pMediaSample->GetActualDataLength();
を実行して、メディアのデータサイズを取ったら、どちらも0が返ってきたのですが
これって、何かの使用ですか?
574:デフォルトの名無しさん
07/06/28 10:27:55
DirectShow のサンプルをみてると JIF, LIF マクロがよく使用されてますが,
機能や使用目的はわかるんですが,これは何の略なんですか?
どうにも気になるんで御教示下さい.
575:デフォルトの名無しさん
07/06/28 11:47:29
Jump If Failed
Leave If Failed
576:デフォルトの名無しさん
07/06/28 16:02:20
>>575
げ、これマジなの??
577:574
07/06/28 17:09:12
>>575
有難う御座います.一応ググってみたら LIF の方は Log-If-Failed のようですね.
何はともあれ助かりました.
578:デフォルトの名無しさん
07/06/28 17:11:13
>>577
なら書き込む前にググれよ・・・
それってすげーたち悪いぞ
579:デフォルトの名無しさん
07/06/28 17:13:43
代わりにググってくれ、という書き込みだったのに
ググってくれなかったから、しかたなく自分でググリました、とさ
580:デフォルトの名無しさん
07/06/28 17:16:27
( ´_ゝ`)フーン
581:574
07/06/28 17:52:42
失礼,JIF, LIF macro でググっても関係無いページばかりヒットしてしまい,
わからなかったので質問しました.
582:デフォルトの名無しさん
07/06/28 18:23:23
失礼、すまんかった
583:デフォルトの名無しさん
07/06/28 21:20:37
Return-If-Failed、てのがあっても良いような
584:デフォルトの名無しさん
07/06/28 22:07:33
DirectShowのサンプルではこんなの使ってるな。
#define FAIL_RET(x) do { if( FAILED( hr = ( x ) ) ) \
return hr; } while(0)
585:デフォルトの名無しさん
07/06/28 22:11:06
>>584
やっぱりあるのか・・FAIL_RETか
つかそのマクロの使い方はあれだな、VC6の時のforみたいだな
586:デフォルトの名無しさん
07/06/29 11:51:22
DirectShowでBGMを、DirectSoundで効果音を出そうとしています。
DirectSound側で、IID_IDirectSoundNotifyを用いると、ターゲットのリンク時に
関数が重複しるぞ、ゴルァと言われてしまいます。
リンクしているのは以下のライブラリ
dsound.lib dxguid.lib uuid.lib strmiids.lib
dxguid.libを抜けば、IID_IDirectSoundNotifyのみ見つからないという状態に
なるので、これを使わないコードにすれば良いという話もあるのですが、うまく
共存させる方法はないでしょうか。ご教授お願いします。
587:デフォルトの名無しさん
07/06/30 09:29:53
CComPtr を std::vector に入れても大丈夫?
std::vector< CComPtr<IMoniker> > vtIMonikerArray;
というふうに使いたいんだけど,std::auto_ptr をいれるときのような問題はありますか?
588:デフォルトの名無しさん
07/06/30 19:15:08
>>587
少なくともauto_ptrのような問題が起きることはない
安心して突っ込みたまえ
589:587
07/06/30 21:11:13
>>588
ありがとう,やってみます.
590:デフォルトの名無しさん
07/07/05 09:35:54
再生レートを設定できるようスプリッタにIMediaSeekingを実装したのですが、
実際にアプリから使用してみると、SetRate(8.0)のように高いレートを設定すると
エラー0x8004025cが返ってきます。
スプリッタ内部のSetRateでは、レートの制限をつけていないのですが、
どうしてかわかりますでしょうか?
591:デフォルトの名無しさん
07/07/05 12:35:20
たぶんオーディオレンダラだな。
592:デフォルトの名無しさん
07/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
07/07/06 09:52:06
>>591
オーディオレンダラをフィルタグラフから外すと成功しました。
ありがとうございました。
しかし、いちいち外したり、接続したりするのは面倒ですね。。
594:デフォルトの名無しさん
07/07/06 12:21:01
>>592
何再生してもそうなる?
ビデオデコーダにDivX本家使うと、再生開始時に何かにアクティブ
ウインドウ奪われちゃうって経験はあるけど。
595:594
07/07/06 12:35:38
>>592
それよく見たら、全画面表示するにはメインウインドウの子
じゃできないような。親をNULLにしたらいいんじゃない?
596:デフォルトの名無しさん
07/07/07 01:13:03
DirectShowで画像を回転させるフィルタでいいのない?
逆さ向けてビデオとってしまったんだorz
597:デフォルトの名無しさん
07/07/07 04:03:29
>>596
ワロタ
てかその修正をフィルタに任せるなよw
動画編集ソフトで回転させるとか
動画を反転回転できるプレイヤー使うとかあるだろ
598:592
07/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:デフォルトの名無しさん
07/07/07 19:58:50
それは、親ウインドのバックグラウンド再描画で映像ウインドが消されてしまうからじゃないかな。
親ウインドのWM_ERASEBKGNDをDefaultWindowProcに渡さないようにして試してみな。
case WM_ERASEBKGND:
return 0;
でOK
600:デフォルトの名無しさん
07/07/08 13:54:57
>>599ご返事ありがとうございます。
入れてみましたが、現状変わらずです。
元々WaitForCompletionで処理を止めている状態ならウィンドウメッセージが
ムービー再生中に取れることも無いので、SetNotifyWindowでイベント登録
に切り替えてみましたが、やはり同じ状態です。
WaitForCompletionで再生しても裏に回った状態になるので、
WM_ERASEBKGNDを無視しても、同じ症状になるのだと思います。
再生中に定期的にInvalidateRectをVideoWindowに送ってもみましたが、
やはり裏の時は裏で再生されます。
うーむ、もう少し調べてみます。
601:デフォルトの名無しさん
07/07/08 14:11:52
親ウインドは何?
ダイアログ?それともダイアログに貼り付けたCStatic?
602:デフォルトの名無しさん
07/07/08 15:00:15
>>601
以下のスタイルで画面切り替え時にSetWindowLongしたものです。
WS_POPUP | WS_SYSMENU | WS_VISIBLE | WS_BORDER
603:デフォルトの名無しさん
07/07/08 19:36:06
WMPみたいな全画面をやりたいなら、普通にStayOnTopで画面いっぱいのサイズにするだけでおk。
604:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/08 20:24:33
ふとスレ見直したんだけど、ownerじゃなくてparentでないのか?
窓の設定が間違っている予感。
606:デフォルトの名無しさん
07/07/08 20:35:11
もうDirectShow関係なくね?
607:デフォルトの名無しさん
07/07/08 20:47:08
>>605ご返事ありがとうございます。
すいません、それは具体的にどのようにすればよいでしょうか?
608:デフォルトの名無しさん
07/07/08 21:17:56
Owner指定なしで、最大化はできんの?
609:デフォルトの名無しさん
07/07/08 21:57:40
>>608
Owner指定無しだと、元の全画面ウィンドウからVideoWindowに移る際に
全画面モードが解除されます。(Movieは左上で再生)
これは、put_FullScreenMode()を実行しでも同じような動作になります。
通常画面からput_FullScreenModeをつかえば全画面でムービー再生してくれるのですが、
全画面モードから使うと、逆に全画面が解除されるようです。
うーん。
610:599
07/07/08 22:11:45
ウインド関係がよくわからない。
ビデオウインドの親ウインドは何?
このウインドを仮にhParentとすると、
hParentウインドに親はいるのか?(or最初からWS_POPUP?)とか
hParentウインドのスタイルにWS_CLIPCHILDRENは設定されているのか?とか
hParentウインド自身は全画面サイズに引き伸ばされ、且つTopに表示されているの?とか
hParentウインドのWM_ERASEBKGNDをちゃんと無視しているの?とか
put_Ownerするタイミングとか
そういうことが知りたい。
611:592
07/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
07/07/08 23:12:43
この手の問題は大抵は、ビデオレンダラが描画したあとに親ウインドが背景をリフレッシュすることで発生する。
タイミングによってはリフレッシュが先に発生し、あとからビデオレンダラの再描画が行われ、表示される場合もある。
したがって親ウインドがある場合、親ウインドのWM_PAINTの描画処理をクリップして、且つERASEBKGNDをさせなければならない。
WS_CLIPCHILDRENやWM_ERASEBKGNDの処理を確実にしなければ効果がない。
ビデオレンダラの親ウインドにWS_CLIPCHILDRENをいれてみたらどうなる?
もしダメならほかの理由かもね。
613:592
07/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
07/07/09 12:22:04
皆さん色々と助言をありがとうございます。
すこし原因らしきものが見えましたのでご報告します。
メインWindowの描画にDirect3Dを使用しているんですが、
全画面モードで
メイン画面の描画を一切やらない → 100%ムービー再生に成功
一度だけDirect3Dでサーフェイスのクリア → 表と裏のランダム再生
一度だけDirect3Dでメイン画面を描画 → 表と裏のランダム再生
どうやらDirect3Dのフロントバッファが問題を起こすようです。
引き続き対策を調べて見ます。
615:592
07/07/09 14:40:31
結局、スマートな方法が見つからず、ムービー再生時には
IDIRECT3DDEVICE9のリセットをおこなってから再生するようにした所
うまくいくようになりました。
おさわがせいたしました。
貴重なご意見をいただき、ありがとうございました。
616:デフォルトの名無しさん
07/07/10 00:26:34
なぜそんな重要なことを。。
617:デフォルトの名無しさん
07/07/10 00:31:05
Direct3Dということはゲームのムービーでしょうか?
618:デフォルトの名無しさん
07/07/10 10:40:38
聞いてどうすんの
619:デフォルトの名無しさん
07/07/10 14:01:52
#include <qedit.h>
と
#include <d3d9.h>
を一緒にするとエラーが出るんです。
順番変えてもエラーでます
対応策ってありますか?
620:デフォルトの名無しさん
07/07/10 14:16:28
環境とエラー内容は?
621:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/10 14:51:17
>>621
d3drm~ってファイル名から明らかだが
qeditがDirectX7を使ってるからだろ?
一つのコンパイルパスにおいて複数のバージョンのDirectXは同居できない。
>>564-565 にズバリな事が書いているような気がするんだが、これは試したの?
623:デフォルトの名無しさん
07/07/10 14:53:34
ああ、違うバージョンのDirectX自体が同居できない訳ではないな。
ちょっと訂正
624:619
07/07/10 14:56:28
>>565
で通りました。
ありがとうございます><
625:デフォルトの名無しさん
07/07/10 15:08:21
現行スレを検索することくらい、答える側にやらせないで自分でやれよ…ったく
626:デフォルトの名無しさん
07/07/10 16:02:52
うわ
627:デフォルトの名無しさん
07/07/10 16:42:41
まいったねこりゃ
628:デフォルトの名無しさん
07/07/10 22:27:39
まぁいいじゃん。過去ログにまさかズバリがあるとは思わないだろう。
ここ過疎気味だし。
629:デフォルトの名無しさん
07/07/11 06:48:47
YUVの4:2:2→4:4:4補間するDShowフィルタってあるんでしょうか?
630:デフォルトの名無しさん
07/07/11 07:02:28
ない
631:629
07/07/11 07:35:29
>>630
ありがとうございました!
632:デフォルトの名無しさん
07/07/11 23:00:21
YUV422→444作れ。簡単だ。それが嫌なら500円くれたらやる。
633:デフォルトの名無しさん
07/07/12 02:13:15
すいません、オーディオ、ビデオの2つの出力ピンのあるスプリッタを作成してるのですが、
2つの出力ピンともレンダラと繋いで、オーディオのみのファイルを再生すると、音声が流れません。
スプリッタのビデオ出力ピンを未接続にし、オーディオ出力ピンのみをレンダラと繋ぐと音声は再生されます。
ピンから出力データが無い場合に、そのピンを接続するのはいけないのでしょうか?
何とか、ビデオピンも繋いで、オーディオのみのファイルの再生をしたいのですが、
どうしたらよいでしょう?
634:デフォルトの名無しさん
07/07/13 02:01:04
PlatformSDK WindowsServer2003 R2をインストールしました
ドキュメントにはサンプルのTextOutがさもあるように書いてあるんですが
どこにあるかわかりません。
どこにあります?
そのほかのサンプルもなんか無いんですが。。
635:デフォルトの名無しさん
07/07/13 16:06:44
それは古いSDKをとってこないと無いはず(DXSDKまで遡らないと無いものもあり)。
636:デフォルトの名無しさん
07/07/14 00:34:35
あ、そうなんだ。ありがとう。
ちょっくら探してきます。
637:デフォルトの名無しさん
07/07/15 19:51:58
幼女と老婆を酷使する番組w
638:デフォルトの名無しさん
07/07/15 19:52:58
↑
間違えた。無視して
639:デフォルトの名無しさん
07/07/15 22:03:20
だが断る
640:デフォルトの名無しさん
07/07/17 18:48:32
DirectShowはょぅじょとばばぁを酷使しますね。
フィルタをシェアウエアで出したいんだがいいとこある?
641:デフォルトの名無しさん
07/07/18 00:19:37
どんなフィルタ?
642:デフォルトの名無しさん
07/07/18 12:24:38
たとえば
>>401の拡張したやつ
顔を検出するやつ
動物体を検知するやつ
あとはサンプルグラバのこったやつ
643:デフォルトの名無しさん
07/07/18 13:49:33
パターン認識のフィルタならどっかになかったっけ?フリーで。
644:デフォルトの名無しさん
07/07/18 22:06:45
javaで顔認識で心霊写真チェッカーみたいなのがあったけどね。
645:デフォルトの名無しさん
07/07/18 22:32:22
windows2000で最新のPlatformSDK入れたヤツ居る?
BaseClassesをnmakeしようとすると
makefile(53) : fatal error U1083: ターゲット マクロ '' が展開されません。
って出るんだけど・・・。
646:デフォルトの名無しさん
07/07/19 13:38:03
複数のBMPから、AVIを作りたいなーと思って調べていたのですが、
DirectShowのフィルタを自作しなければできないのでしょうか??