IMediaPositionとIMediaSeekingの混用について

このQ&Aのポイント
  • IMediaPositionとIMediaSeekingを混用する際に注意点はあるのか?
  • IMediaPositionとIMediaSeekingの違いについて教えてください。
  • IMediaPositionとIMediaSeekingを同時に使った場合、動作に問題が生じることはあるのでしょうか?
回答を見る
  • ベストアンサー

IMediaPositionとIMediaSeekingの混用について

私は現在、DirectShowをC++環境で使って動画のプレイヤー作成・保守を行っておりますが、 前任者のコードに気になるところがありご質問いたします。 そのコードには、IMediaPositionとIMediaSeekingを同時に混用しています。 MSDNを参照するとC++はIMediaSeekingを使用し、VBはImediaPositionを使用する旨の記述がありますが、混用したときの注意書きがありません。 皆さんにお聞きしたいことは以下のことです。 (1)混用によって動作がおかしくなることがあるのか? (2)そもそも何が違うか? お手すきの時で結構ですので、経験のある方、ご存知の方、お教えいただけますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • joe-
  • ベストアンサー率34% (11/32)
回答No.1

全然自信はありませんが、MSDNを読むとIMediaSeekingを使うとdirectshowの内部でIMediaPositionを使っているように思います。そう思った根拠としては、 1)IMediaPositionはFilter内部で使うっぽい名前である(get_○○、put_○○) 2)MSDNによると:Filter developers: Do not implement this method. Implement IMediaSeeking instead. If your filter supports IMediaSeeking, the Filter Graph Manager automatically handles calls to IMediaPosition. 混用しても多分動くとは思いますが、MSDNでもC++では使うなと書いているので、あまりお勧め致しません。

yiuchan
質問者

お礼

さっそく回答ありがとうございます。参考にさせて頂きます。 「自動的に(必ず?)IMediaPositionが選ばれるから直接呼ぶな」と言っているのですね。なるほど納得しました。

関連するQ&A

  • VBとC#

    よくある質問とは思いますが、VBとC#は何が違うんでしょうか? コードの記述法が少し違うだけで、できる事は同じのように思えます。 それでもマイクロソフトがVBとC#を分けてリリースするということは、何か理由があるのでは…。 「コレを作るならVBよりC#を使ったほうががいい!」というようなものはあるのでしょうか?

  • RichTextBoxのSpanメソッドの文字列式について

    お世話になります。 MSDNに記述のRichTextBoxのSpanメソッドの使用例に記述がある ' 文の末尾まで選択します。 RichTextBox1.Span ".?!:", True, True ' 単語の末尾まで選択します。 RichTextBox1.Span " ,;:.?!", True, True の".?!:"や" ,;:.?!"の意味がわかりません。 MSDNのどこを参照すれば分かるでしょうか? また、文の先頭までを選択したいのですが、どのような指定をすれば宜しいでしょうか? ご教授願えれば幸いです。よろしくお願いします

  • 行ロックをかけたい

    DB環境:Oracle9i 9.2.0 言語 :VB6.0 ミドルウェア:oo4o VB初心者です。 VBアプリで参照したデータに行ロックをかけて次に参照した場合はエラーメッセージを出したいです。 その為にSELECT文で「FOR UPDATE NOWAIT」をかけるようにしました。すると次のコードで落ちてしまいます。 Set recSet = OraDatabase.CreateDynaset(ps_SQL, ORADYN_READONLY) 'レコードセットオープン エラーメッセージ「エラーコード54、リソースビジーです~」 とりあえずはエラーコードを返すようにできればOKだと思うのですが。。 「FOR UPDATE NOWAIT」を記述する場合のVBの記述方法やVBのロック管理の方法などいい方法がございましたらアドバイスお願い致します。

  • リンク時エラー

    DirectShowのSampleGrabberを使ったプログラムをborland C++ コンパイラでコンパイルしようとしたときにエラーが出てしまいます。 bcc32 -I"C:\Borland\Bcc55\Include" -L"C:\Borland\Bcc55\Lib" -I"c:\Program Files\Microsoft Platform SDK\Include" -L"c:\Program Files\Microsoft Platform SDK\Lib" -L"C:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Lib" -------------------------------------------------- Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '_CLSID_SampleGrabber' が未解決(C:\CPP\DIRECTSHOW\CTHUMBNAI L.OBJ が参照) Error: 外部シンボル '_IID_ISampleGrabber' が未解決(C:\CPP\DIRECTSHOW\CTHUMBNAIL .OBJ が参照) Error: 外部シンボル '_MEDIATYPE_Video' が未解決(C:\CPP\DIRECTSHOW\CTHUMBNAIL.OB J が参照) Error: 外部シンボル '_MEDIASUBTYPE_RGB24' が未解決(C:\CPP\DIRECTSHOW\CTHUMBNAIL .OBJ が参照) Error: 外部シンボル '_FORMAT_VideoInfo' が未解決(C:\CPP\DIRECTSHOW\CTHUMBNAIL.O BJ が参照) DierctShowは最近Platform SDKに統合されたらしいのでPlatform SDKからインクルードしています。 ご存知の方がいらっしゃいましたらご教授お願い致します。

  • C#について

    C#で、データベースの勉強をしていますが、 市販の一般書籍では、サーバーエクスプローラ等、GUIを使用して簡単に、データベースアプリケーションが作成できるなどの記述が多くしてあります。 VBやC#のデータベースの記述に関するところは、ほとんどの書籍(9割以上)が、GUIで、DB接続、ドラッグ&ドロップで、データセット作成とか、説明されていますが、少なくとも、私の経験上、VB.NETの開発で、そんな現場に出会ったことがありません。DB接続も、データセット取得も、すべてコードで記述しました。 なんで、そんな一般書籍は、使いもしないことばかり触れているのだろうと毎日思うのですが、C#のデータベース(ADO.NET)で、すべてプログラムコードで、記述している一般書籍はありませんでしょうか? できれば、VisualStudio2005か、2008対応でお願いします。

  • 参照なバリアント

    VB熟達者というよりは、VBマニアな方々に質問です。 Sub Hoge(A) A = 6 End Sub Sub Main() Dim N As Long Hoge N Debug.Print N End Sub このコードを実行して "6" が出力されるのは明白です。 Hogeはバリアントの参照を取るにも関わらず、LongのNを渡してそのNに6を入れてくれました。 これは、VBが引数を渡す時点で変数A用のメモリ領域をかってに確保し、Nという変数の参照型を作ったということの証拠になります。 実際、DLLでAPIを用意して、バリアント構造体のVarTypeを調べたところ、未知の16387という数値が現れました。 これは、MSDNライブラリを見たところ、VT_LONG Or VT_BYREFのようです。 このように、VBでも参照型は存在していますが、隠蔽されています。 そこで、参照型をもっと自由に使いたいと思い、参照型を作るAPIを作ってみました。 しかし、=演算子で代入しようとしたところ、参照が解除されて通常のバリアント型に戻ってしまいます。 ただし、もともとある変数の参照であるバリアント変数を別の変数の参照に変えたもののときは、参照先に代入してくれました。 どうやらVBはケチなようで、VBが内部で引数として作った参照変数以外は、参照している先に代入はしてくれないようです。 この障害を乗り越える方法を思いついた方、ぜひ教えてください。

  • サンプルコードを公開しているサイトについて

    今検索エンジンでサンプルコードを探しています。 多種様々なコードが掲載していて、 分り易い説明が掲載しているサイトとか。 自分はVB2008を使用していますが、種類豊富なサイトが見つかりません。 良いサイトありませんか? 数種類位教えて下さい 「私はこのサイトで様々なソースがあって便利だ」 「種類が豊富で良い」等の紹介もお願いします。 ●現在自分がブックマーク(お気に入り)に入れているサイト● @DOBON.NET プログラミング道@ ​http://dobon.net/vb/dotnet/index.html​ @これがほしかった!厳選サンプルツール集@ ​http://anetm.com/dev/tools/vbdotnet/​ @MSDN Home@ ​http://www.microsoft.com/japan/msdn/thisweek/wednesday/​ @VBレスキュー(花ちゃん)@ ​http://hanatyan.sakura.ne.jp/​

  • XMLパーサー(であってるのかな?)について

    いつもお世話になっています。 VB6.0でXMLファイルを読み込むプログラムを修正しています。 参照設定で「Microsoft XML,version2.0(msxml.dll)」というのを使用しています。 そこで、みなさんにお伺いしたいのが、 このオブジェクトのヘルプファイルの場所なんです。 正直言っていろいろなメンバーがあったり、メソッドがあったり しても、何を書いてるのか「やんわりと」しかわかりません(;_;) MSDNでそれらしきライブラリを見つけたのですが、 微妙に名前が違ってて、それでもいいのかわからず・・・ ヘルプドキュメント(MSDNなど)の場所をご存知の方 いらっしゃいましたら、教えて下さい。 自分でみつけたのは 1 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemxmlxmlnodememberstopic.asp 2 http://www.microsoft.com/japan/msdn/xml/general/beginner.asp#What でした。これであってるのでしょうか? 2は、まさにやってるのは「これ」なんですが、あまりにも概要だけで、細かい処理の内容までわかりません。 みなさんよろしくお願いします。

  • VBから参照できないCのDLLを使用する方法

    Cで作成されたDLLがあるのですが、VBから参照設定しても「指定されたファイルへの参照は登録できません。」と怒られます。 そのようなDLLをどうしてもVBから使用したい場合はどうすれば良いでしょうか? 直接は無理だとしても、間に何かをかましてできると思うのですが、良い方法があれば教えてください。 ちなみに VB6 です。 よろしくお願いします。

  • Refreshメソッドの使い方

    ■環境 win2000 VB6.0 MSDNや既存にあるPGを参照してみたのですがRefreshメソッドの使用方法がわかりません。 Refreshメソッドをコメントにして実行してもこれと言った差はありません。 何か例としてRefresh関数があるとなしとで差がでるようなものは無いでしょうか? どのような場合にRefresh関数は使用するのでしょうか? 皆様お力をお貸しください。

専門家に質問してみよう