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

ISBE2SpanningEvent

COM
IIDcaede760-b6b1-11db-a578-0018f3fa24c6継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Stream Buffer Engine バージョン 2 (SBE2) 向けの in-band スパニングイベントを実装します。in-band スパニングイベントとは、ストリーム内の状態情報の一部として録画できる in-band イベントです。

解説(Remarks)

in-band スパニングイベントは持続的な意味を持ちます。すなわち、置き換えられるか消去されるまで存在し続け、ストリーム内でそれに続くイベントの状態の一部となります。たとえば、ストリームのフォーマットは時間の経過とともに変化しうるため、in-band スパニングイベントとして保存されます。映像は録画の開始時点では高精細 (HD) コンテンツで構成されていても、録画の途中で標準精細 (SD) コンテンツに切り替わり、その後再び HD コンテンツに戻ることがあります。ユーザーが SD から HD へ、あるいはその逆へスキップすると、フォーマットがスパニングイベントとして保存されているため、動的なフォーマット変更が発生します。

in-band スパニングイベントは、SBE2 以外のモジュールでも利用できます。たとえば、コンテンツ保護は保護ポリシーをスパニングイベントとして保存できます。録画が保護されていないコンテンツとして始まり、途中から保護されたコンテンツになることがあります。保護されたコンテンツを示す in-band スパニングイベントが、保護されたコンテンツを示す in-band スパニングイベントを置き換えます。前段落のストリームフォーマットの例と同様に、保護されていないコンテンツから保護されたコンテンツへのスキップにより、in-band スパニングイベントがソースされます。

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

メソッド 1

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

vtbl 3 HRESULT GetEvent(GUID* idEvt, DWORD streamId, DWORD* pcb, BYTE* pb)

Stream Buffer Engine バージョン 2 (SBE2) から in-band スパニングイベントとイベントデータを取得します。in-band スパニングイベントとは、置き換えられるか消去されるまで存在し続け、同じストリーム内で後に現れるイベントの状態の一部となるイベントです。

idEvtGUID*inスパニングイベントの種類を識別する GUID。
streamIdDWORDinスパニングイベントを含むストリームを識別します。
pcbDWORD*inoutイベントデータバッファーのサイズを受け取る値へのポインター。pb パラメーターが NULL の場合、このパラメーターは必要なバッファーサイズを返します。
pbBYTE*outイベントデータを受け取るバッファーへのポインター。このパラメーターが NULL の場合、pcb パラメーターが必要なバッファーサイズを返します。イベントデータの構造はイベントの種類によって異なります。

戻り値

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

解説(Remarks)

以下の種類の in-band スパニングイベントが定義されています。

説明
EVENTID_ARIBcontentSpanningEvent Integrated Services Digital Broadcasting (ISDB) コンテンツの開始を通知します。このイベントに関連付けられるデータはありません。
EVENTID_AudioDescriptorSpanningEvent 音声ストリーム用の MPEG-2 記述子を格納します。イベントデータは次のレイアウトのバイト配列です:
  • バイト 0 には記述子タグが格納されます。
  • バイト 1 には記述子本体の長さが格納されます。
  • 残りのバイトには記述子本体が格納されます。
EVENTID_AudioTypeSpanningEvent データストリームの音声タイプを指定します。イベントデータは、ISO 639 Language Descriptor の audio_type フィールドを格納する char です。
EVENTID_CASFailureSpanningEvent condition access system (CAS) の障害を通知します。イベントデータは使用している CAS 技術によって異なります。
EVENTID_ChannelChangeSpanningEvent チャンネル変更の開始または終了を通知します。イベントデータは ChannelChangeInfo 構造体です。
EVENTID_ChannelInfoSpanningEvent ケーブルテレビのチャンネルに関する情報を格納します。イベントデータは ChannelInfo 構造体です。
EVENTID_ChannelTypeSpanningEvent ケーブルテレビのチャンネルタイプに関する情報を格納します。イベントデータは ChannelTypeInfo 構造体です。
EVENTID_CSDescriptorSpanningEvent caption service 記述子を格納します。イベントデータは SpanningEventDescriptor 構造体です。
EVENTID_CtxADescriptorSpanningEvent content advisory 記述子を格納します。イベントデータは SpanningEventDescriptor 構造体です。
EVENTID_DualMonoSpanningEvent デュアルモノラル音声ストリームの音声言語を指定します。イベントデータは DualMonoInfo 構造体です。
EVENTID_DVBScramblingControlSpanningEvent Digital Video Broadcasting (DVB) プログラムストリームがスクランブルされているかどうかを示します。このイベントは transport_scrambling_control フィールドの値が変化したときに通知されます。イベントデータは DVBScramblingControlSpanningEvent 構造体です。
EVENTID_EmmMessageSpanningEvent DVB データストリーム内の Entitlement Management Message (EMM) に関する情報を格納します。イベントデータは SpanningEventEmmMessage 構造体です。
EVENTID_LanguageSpanningEvent 音声言語を指定します。イベントデータは LanguageInfo 構造体です。
EVENTID_PBDAParentalControlSpanningEvent 現在のペアレンタルコントロールポリシーに関する情報を格納します。イベントデータは PBDAParentalControl 構造体です。
EVENTID_PIDListSpanningEvent 現在のストリームのパケット識別子 (PID) のリストを格納します。イベントデータは PIDListSpanningEvent 構造体です。
EVENTID_RRTSpanningEvent rating region table (RRT) に関する情報を格納します。データは SECTION 構造体です。
EVENTID_SignalAndServiceStatusSpanningEvent テレビ service の現在の状態を通知します。イベントデータは SignalAndServiceStatusSpanningEvent_State 列挙型のメンバーです。
EVENTID_StreamIDSpanningEvent stream identifier 記述子を格納します。イベントデータは EVENTID_AudioDescriptorSpanningEvent イベントと同じフォーマットです。
EVENTID_StreamTypeSpanningEvent ストリームタイプを指定します。イベントデータは MPEG2StreamType 列挙型の値を格納する DWORD です。
EVENTID_SubtitleSpanningEvent subtitling 記述子を格納します。イベントデータは EVENTID_AudioDescriptorSpanningEvent イベントと同じフォーマットです。
EVENTID_TeletextSpanningEvent teletext 記述子を格納します。イベントデータは EVENTID_AudioDescriptorSpanningEvent イベントと同じフォーマットです。
EVENTID_TuneFailureSpanningEvent チューニングの失敗を通知します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISBE2SpanningEvent "{CAEDE760-B6B1-11DB-A578-0018F3FA24C6}"
#usecom global ISBE2SpanningEvent IID_ISBE2SpanningEvent "{}"
#comfunc global ISBE2SpanningEvent_GetEvent  3 var,int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。