次の方法で共有


エンコーダーの実装とサポート

Windows XP Service Pack 1 では、Microsoft は、ビデオ専用エンコーダー デバイスをサポートするために、 ksmedia.h で 3 つのカーネル ストリーミング プロパティ セットと 1 つの列挙を定義しました。 各プロパティ セットには、1 つのプロパティが含まれています。 つまり、各プロパティは独自のプロパティ セットを受け取ります。 ドライバーが get-property または Set-property の呼び出しを行う場合は、KSPROPERTY 構造体の Set メンバーでプロパティ セットの GUID (ksmedia.h で定義) を指定し、呼び出しを設定するときに Id メンバーに 0 を指定します。

プロパティ セット 説明
ENCAPIPARAM_BITRATE

エンコーダー デバイスでサポートされるエンコード ビット レートを指定するには、このプロパティ セットを実装します。 詳細については、 エンコーダー コードの例 を参照してください。

ENCAPIPARAM_BITRATE_MODE

デバイスでサポートされるエンコード モードを指定するには、このプロパティ セットを実装します。 このプロパティ セットでは、 VIDEOENCODER_BITRATE_MODE 列挙を使用して、サポートされているモードを指定します。 詳細については、 エンコーダー コードの例 を参照してください。

ENCAPIPARAM_PEAK_BITRATE

デバイスの最大エンコード ビット レートを指定するには、このプロパティ セットを実装します。

クライアントは、IEncoderAPI COM インターフェイスから IVideoEncoder COM インターフェイスを派生させてこれらのプロパティにアクセスします (Windows ソフトウェア開発キット (SDK) のドキュメントで説明)。

ミニドライバーは、各ENCAPIPARAM_Xxx プロパティの既定値を指定する必要があります。 「Encoder Code Examples」トピックでは、既定のプロパティ値を指定する方法を示します。 エンコーダー フィルターの開発とデバッグ中に、現在のプロパティ ページは、ENCAPIPARAM_BITRATE プロパティ セットをサポートするミニドライバーからトリガーできます。

DirectX 9.0 では、オーディオのみのエンコーダーを含むさまざまなエンコーダーをより適切にサポートできるように、 ksmedia.h で 6 つの追加プロパティ セットと 1 つのイベント セットが定義されました。 ENCAPIPARAM_Xxx プロパティと同様に、各プロパティは独自のプロパティ セットを受け取ります。

プロパティ セット 説明
CODECAPI_VIDEO_ENCODER

デバイスがビデオ ストリームのエンコード (テレビ オーディオなどの補助オーディオを含む) をサポートしている場合は、このプロパティ セットのサポートを実装します。

CODECAPI_AUDIO_ENCODER

デバイスがオーディオ専用エンコーダーの場合は、CODECAPI_VIDEO_ENCODERではなく、このプロパティ セットのサポートを実装します。

CODECAPI_SETALLDEFAULTS

エンコード ビット レートやエンコード モードなど、エンコーダー デバイスのすべての内部設定を既定値にリセットするには、このプロパティ セットを実装します。

CODECAPI_ALLSETTINGS

エンコーダー デバイスの現在の設定を伝えるために、このプロパティ セットを実装します。 このプロパティ セットは、クライアントとの間の通信に使用されます。

CODECAPI_SUPPORTSEVENTS

デバイスがユーザー モードからのイベント (エンコード モード、ビット レート、その他の設定の変更など) をサポートしている場合は、このプロパティ セットを実装します。 このプロパティ セットを実装する場合は、CODECAPI_CHANGELISTS イベントのサポートも実装する必要があります。

CODECAPI_CURRENTCHANGELIST

このプロパティ セットを実装して、1 つ以上のエンコーダー プロパティを設定するために以前の呼び出しで変更されたエンコーダー パラメーターを決定します。

イベントセット 説明

CODECAPI_CHANGELISTS

デバイスが CODECAPI_SUPPORTSEVENTS プロパティ セットを介したユーザー モード イベントへの応答をサポートしている場合は、このイベント セットを実装して、CODECAPI_SETALLDEFAULTSまたはCODECAPI_ALLSETTINGSに対するクライアントの以前の Set-property 呼び出しの結果として変更されたエンコーダー設定の一覧を返します。

クライアントは 、ICodecAPI COM インターフェイス (Windows SDK ドキュメントで説明) を介してこれらのプロパティにアクセスします。 公開する必要があるインターフェイスを指定する方法など、COM インターフェイスの詳細については、「 エンコーダーのインストールと登録 」を参照してください。

ミニドライバーは、基本的な get-property クエリのサポートを実装する必要があります。 「Encoder Code Examples」トピックでは、get-property クエリをサポートする方法を示します。

エンコーダー フィルターを開発するときは、エンコード機能をビデオ キャプチャ フィルターとは別のフィルターに移動します。 グラフ ビルダーがエンコーダーとキャプチャ フィルターを適切に接続できるように、独自のプライベート メディアを定義します。 ハードウェアでエンコードされていないコンテンツをバス でマスターできる場合は、パブリック メディアを公開することもできます。 パブリックメディアとプライベートメディアの両方を実装する場合は、グラフの構築時間が短縮されるため、最初にプライベートメディアを一覧表示します。フィルター グラフを作成するときに正しいフィルターを見つけます。

(個別のフィルター グラフで) フィルターのメディアと複数のインスタンスを使用する方法の詳細については、「 メディアとカテゴリ」を参照してください。