Win32 API 日本語リファレンス
ホームMedia.DirectShow › IBDA_Encoder

IBDA_Encoder

COM
IID3a8bad59-59fe-4559-a0ba-396cfaa98ae3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

デバイスのエンコーダーサービスへのアクセスを提供します。

解説(Remarks)

このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IBDA_Encoder)

メソッド 5

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT QueryCapabilities(DWORD* NumAudioFmts, DWORD* NumVideoFmts)

デバイスがサポートするエンコード形式の数を取得します。

NumAudioFmtsDWORD*outオーディオ形式の数を受け取ります。
NumVideoFmtsDWORD*outビデオ形式の数を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT EnumAudioCapability(DWORD FmtIndex, DWORD* MethodID, DWORD* AlgorithmType, DWORD* SamplingRate, DWORD* BitDepth, DWORD* NumChannels)

デバイスがサポートするオーディオ形式のうち 1 つを取得します。

FmtIndexDWORDin取得するオーディオ形式の 0 から始まるインデックス。オーディオ形式の数を取得するには、IBDA_Encoder::QueryCapabilities を呼び出します。
MethodIDDWORD*outこのオーディオメソッドを一意に識別する値を受け取ります。
AlgorithmTypeDWORD*out

エンコードアルゴリズムの種類を受け取ります。次の値が定義されています。

意味
PBDA_Encoder_Audio_AlgorithmType_MPEG1LayerII
0x00000000
MPEG-1 Layer II。
PBDA_Encoder_Audio_AlgorithmType_AC3
0x00000001
Dolby AC3。
SamplingRateDWORD*outオーディオのサンプリングレート (Hz 単位) を受け取ります。
BitDepthDWORD*outオーディオサンプルあたりのビット数を受け取ります。
NumChannelsDWORD*outオーディオチャンネルの数を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT EnumVideoCapability(DWORD FmtIndex, DWORD* MethodID, DWORD* AlgorithmType, DWORD* VerticalSize, DWORD* HorizontalSize, DWORD* AspectRatio, DWORD* FrameRateCode, DWORD* ProgressiveSequence)

デバイスがサポートするビデオ形式のうち 1 つを取得します。

FmtIndexDWORDin取得するビデオ形式の 0 から始まるインデックス。ビデオ形式の数を取得するには、IBDA_Encoder::QueryCapabilities を呼び出します。
MethodIDDWORD*outこのビデオメソッドを一意に識別する値を受け取ります。
AlgorithmTypeDWORD*out

エンコードアルゴリズムの種類を受け取ります。次の値が定義されています。

意味
PBDA_Encoder_Video_MPEG2PartII
0x00000000
MPEG-2, Part 2。
PBDA_Encoder_Video_MPEG4Part10
0x00000001
MPEG-4, Part 10。
PBDA_Encoder_Video_AVC
0x00000001
AVC ビデオ。
PBDA_Encoder_Video_H264
0x00000001
H.264 ビデオ。
VerticalSizeDWORD*outvertical_size_value フィールドを受け取ります。
HorizontalSizeDWORD*outhorizontal_size_value フィールドを受け取ります。
AspectRatioDWORD*outaspect_ratio_information フィールドを受け取ります。
FrameRateCodeDWORD*outframe_rate_code フィールドを受け取ります。
ProgressiveSequenceDWORD*outprogressive_sequence フィールドを受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

VerticalSizeHorizontalSizeAspectRatioFrameRateCodeProgressiveSequence の各パラメーターは、ANSI/SCTE 43 2005 標準に従って解釈されます。

vtbl 6 HRESULT SetParameters(DWORD AudioBitrateMode, DWORD AudioBitrate, DWORD AudioMethodID, DWORD AudioProgram, DWORD VideoBitrateMode, DWORD VideoBitrate, DWORD VideoMethodID)

エンコーダーサービスのパラメーターを設定します。

AudioBitrateModeDWORDin

オーディオ圧縮モード。次の値が定義されています。

意味
PBDA_Encoder_BitrateMode_Constant
0x00000001
固定ビットレート (CBR) モード。
PBDA_Encoder_BitrateMode_Variable
0x00000002
可変ビットレート (VBR) モード。
PBDA_Encoder_BitrateMode_Average
0x00000003
平均ビットレート (ABR) モード。
AudioBitrateDWORDinオーディオビットレート。
AudioMethodIDDWORDin有効なオーディオエンコーダーメソッド。
AudioProgramDWORDinオーディオのプログラム番号。
VideoBitrateModeDWORDinビデオ圧縮モード。値の一覧については、AudioBitrateMode を参照してください。
VideoBitrateDWORDinビデオビットレート。
VideoMethodIDDWORDin有効なビデオエンコーダーメソッド。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT GetState(DWORD* AudioBitrateMax, DWORD* AudioBitrateMin, DWORD* AudioBitrateMode, DWORD* AudioBitrateStepping, DWORD* AudioBitrate, DWORD* AudioMethodID, DWORD* AvailableAudioPrograms, DWORD* AudioProgram, DWORD* VideoBitrateMax, DWORD* VideoBitrateMin, DWORD* VideoBitrateMode, DWORD* VideoBitrate, DWORD* VideoBitrateStepping, DWORD* VideoMethodID, DWORD* SignalSourceID, ULONGLONG* SignalFormat, BOOL* SignalLock, INT* SignalLevel, DWORD* SignalToNoiseRatio)

エンコーダーサービスの現在の状態を照会します。

AudioBitrateMaxDWORD*outオーディオビットレートの最大値を受け取ります。
AudioBitrateMinDWORD*outオーディオビットレートの最小値を受け取ります。
AudioBitrateModeDWORD*out

オーディオ圧縮モードを受け取ります。次の値が定義されています。

意味
PBDA_Encoder_BitrateMode_Constant
0x00000001
固定ビットレート (CBR) モード。
PBDA_Encoder_BitrateMode_Variable
0x00000002
可変ビットレート (VBR) モード。
PBDA_Encoder_BitrateMode_Average
0x00000003
平均ビットレート (ABR) モード。
AudioBitrateSteppingDWORD*outオーディオビットレートの最小増分を受け取ります。
AudioBitrateDWORD*outオーディオビットレートを受け取ります。
AudioMethodIDDWORD*out有効なオーディオエンコーダーメソッドを受け取ります。
AvailableAudioProgramsDWORD*outエンコーダーが利用可能なオーディオプログラムの数を受け取ります。
AudioProgramDWORD*out現在エンコード中のオーディオプログラムのプログラム番号を受け取ります。
VideoBitrateMaxDWORD*outビデオビットレートの最大値を受け取ります。
VideoBitrateMinDWORD*outビデオビットレートの最小値を受け取ります。
VideoBitrateModeDWORD*outビデオ圧縮モードを受け取ります。値の一覧については、AudioBitrateMode を参照してください。
VideoBitrateDWORD*outビデオビットレートを受け取ります。
VideoBitrateSteppingDWORD*outビデオビットレートの最小増分を受け取ります。
VideoMethodIDDWORD*out有効なビデオエンコーダーメソッドを受け取ります。
SignalSourceIDDWORD*out信号ソースの識別子を受け取ります。この値は、IBDA_AUX::EnumCapability メソッドから返される補助コネクター ID です。
SignalFormatULONGLONG*outAnalogVideoStandard 列挙型の値を受け取ります。この値は、補助入力で受信されるアナログビデオ標準を指定します。
SignalLockBOOL*outデバイスが信号ロックを取得している場合は TRUE、それ以外の場合は FALSE を受け取ります。
SignalLevelINT*out信号レベルをデシベル単位で受け取ります。
SignalToNoiseRatioDWORD*out信号対雑音比を示す 0 から 100 の値を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IBDA_Encoder "{3A8BAD59-59FE-4559-A0BA-396CFAA98AE3}"
#usecom global IBDA_Encoder IID_IBDA_Encoder "{}"
#comfunc global IBDA_Encoder_QueryCapabilities    3 var,var
#comfunc global IBDA_Encoder_EnumAudioCapability  4 int,var,var,var,var,var
#comfunc global IBDA_Encoder_EnumVideoCapability  5 int,var,var,var,var,var,var,var
#comfunc global IBDA_Encoder_SetParameters        6 int,int,int,int,int,int,int
#comfunc global IBDA_Encoder_GetState             7 var,var,var,var,var,var,var,var,var,var,var,var,var,var,var,var,var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。