DirectShow

概要

DirectShow とは、Windows 向けのマルチメディア・ストリーミング・プロセッシング・フレームワーク である。

Windows では、Video for Windows というビデオ処理用の API セットがあったが、MPEG ビデオや、 ネットワークストリーミング等の要件に対応できなかった。そのため、これらをサポートするコンポーネント として、1997 年 DirectX API 群の一つとしてリリースされた。

DirectShow アーキテクチャの特徴として、フィルターと呼ばれるコンポーネントを組み合わせ、データーフロー に応じて、フィルター群を接続することで、コンテンツの再生のみならず、エンコーディングや、編集、特殊効果 など、幅広い応用ができる点が挙げられる。そのため、メディアプレイヤーのみにとどまらず、ビデオ編集ソフト など幅広いアプリケーションで使用されている。

一方、独自に開発したフィルターコンポーネントを、プラグインのような形で、システムに組み込むことができる ため、相性の悪いフィルターの組み合わせが使用されると、さまざまな不具合が生じることがある。DVD プレイヤー やビデオ編集ソフト、フリーソフトウェア系のフィルターなど、ユーザーの環境によってインストールされる フィルターコンポーネントが様々であるため、開発者のみならず、一般のエンドユーザーにとっても、DirectShow 環境 の安定した運用には、苦労する点が多い。

フィルターグラフ・フィルター

前述のように、DirectShow のプログラミングでは、フィルターグラフと呼ばれるコンポーネントに、フィルターを登録し、 希望する処理に応じたデーターフロー通りにフィルター同士を接続し、フィルターグラフを起動することで、所定の処理を 行う。

フィルターには、ピンと呼ばれる接続点があり、フィルター同士の接続では、このピン同士を接続することになる。

ピンには、出力ピンと、入力ピンがあり、接続は必ず、出力 -> 入力 という向きで行われる。

データーの発生源となるフィルターを、ソースフィルター、データーの最終的な消費先となるフィルターをレンダラー フィルターと呼ぶことがある。 入力と出力を持ち、中間的な処理を行うフィルターは、トランスフォームフィルターと呼ばれる。

データーフローを水流に例えるならば、出力側を上流、入力側を下流と考えることができる。

DirectShow の SDK ツールには、GraphEdit というプログラムがあり、フィルターグラフ内のフィルターや、 ピンの接続の様子をグラフィカルに確認することができる。

フィルター開発

DirectShow フィルターコンポーネントは、COM コンポーネントとして実装され、所定のインターフェイスを サポートするコンポーネント・オブジェクトとなっている。

通常使用されるフィルターコンポーネントは、システム側から提供されるので、大抵の応用では、フィルター コンポーネントを独自に開発する必要はない。が、標準コンポーネントで提供されない機能が求められる場合は、 独自にフィルターを開発する必要が生じる。

DirectShow アーキテクチャは、汎用性に富んでいるが、その分、必要とされる要件も多く、フィルターの 開発難度は高いといえる。そのため、問題のあるフィルターも流通しており、特に自動作成で稼働するフィルター に問題があると、開発者の想定外のアプリケーションソフトに不具合を引き起こす場合がある。

フィルターでのデーターフローの制御には、プッシュモデルとプルモデルがある。ほとんどの下流フィルターでは、 プッシュモデルでのデーター受信を想定している。そのため、通常フィルターグラフ内に、1つは、プッシュモデルで データ送出を行うフィルターが存在している。

標準フィルターコンポーネントでは、パーサーフィルターやスプリッターフィルター、キャプチャーフィルターが そのようなフィルターに該当する。

パーサーフィルターやスプリッターフィルターが、外部フィルターからデーター供給を必要とする場合、プルモデルで 上流ソースフィルターからデーターを取得する。

トランスフォームフィルターに相当するフィルターは、開発需要が多かったため、DirectShow フィルターの開発 難度を緩和する目的で、簡略化された仕様である DMO (DirectX Media Object) が、DirectX 8 の時代に導入 された。DMO が DirectShow フィルターグラフと相互運用される場合、システム提供のプロクシーフィルターを 介して使用される。

Microsoft Media Foundation

DirectShow がリリースされて既に 10 年以上が経過してることもあり、次世代のマルチメディアプラットフォーム として、Microsoft Media Foundation が、Windows Vista と共にリリースされている。

HDTV コンテンツ、DRM やハードウェア (DXVA) の先進サポート、高効率化など多くの新機構を備えており、 Windows 7 のリリースを控え、これからの普及が期待される。

ただし、Media Foundation は、Windows XP にはバックポートされず、また再生系用途に重点を置いているため、 DirectShow を完全に置き換えるものではないとされている。