ISBE2SpanningEvent
COM公式ドキュメント
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。
Stream Buffer Engine バージョン 2 (SBE2) から in-band スパニングイベントとイベントデータを取得します。in-band スパニングイベントとは、置き換えられるか消去されるまで存在し続け、同じストリーム内で後に現れるイベントの状態の一部となるイベントです。
| idEvt | GUID* | in | スパニングイベントの種類を識別する GUID。 |
| streamId | DWORD | in | スパニングイベントを含むストリームを識別します。 |
| pcb | DWORD* | inout | イベントデータバッファーのサイズを受け取る値へのポインター。pb パラメーターが NULL の場合、このパラメーターは必要なバッファーサイズを返します。 |
| pb | BYTE* | out | イベントデータを受け取るバッファーへのポインター。このパラメーターが NULL の場合、pcb パラメーターが必要なバッファーサイズを返します。イベントデータの構造はイベントの種類によって異なります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
以下の種類の in-band スパニングイベントが定義されています。
| 値 | 説明 |
|---|---|
| EVENTID_ARIBcontentSpanningEvent | Integrated Services Digital Broadcasting (ISDB) コンテンツの開始を通知します。このイベントに関連付けられるデータはありません。 |
| EVENTID_AudioDescriptorSpanningEvent | 音声ストリーム用の MPEG-2 記述子を格納します。イベントデータは次のレイアウトのバイト配列です:
|
| 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 公式リファレンス: 英語 (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 方式にも切替可。#define global IID_ISBE2SpanningEvent "{CAEDE760-B6B1-11DB-A578-0018F3FA24C6}" #usecom global ISBE2SpanningEvent IID_ISBE2SpanningEvent "{}" #comfunc global ISBE2SpanningEvent_GetEvent 3 sptr,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。