次の方法で共有


SECTION 構造体

SECTION 構造体は MPEG-2 テーブル セクションのショート ヘッダーを表す。

構文

typedef struct {
    TID TableId;
    union
    {
        MPEG_HEADER_BITS_MIDL S;
        WORD                  W;
    } Header;
    BYTE SectionData[1];
} SECTION, *PSECTION;

メンバ

TableId

セクションのテーブル識別子 (TID) を指定する。

Header.S

ヘッダー ビットを MPEG_HEADER_BITS_MIDL 構造体として格納する。アプリケーションは、この代わりに Header.W フィールドを使用するべきである。

Header.W

ヘッダー ビットを WORD 型として格納する。個々のビット フィールドを取得するには、このメンバを MPEG_HEADER_BITS 構造体に強制する。

SectionData

セクション データをバイト配列として格納する。配列の長さは Header.W.SectionLength フィールドで指定する。

注意

この構造体は MPEG-2 ショート ヘッダーを表す。このセクションには、ショート ヘッダーを拡張するロング ヘッダーまたは DSM-CC ヘッダーが格納されている場合がある。

  • Header.W.SectionSyntaxIndicator ビットが設定されている場合、セクションは長い構文を使用する。この場合、SECTION ポインタを LONG_SECTION ポインタにキャストできる。
  • TID が DSM-CC のユーザーからネットワークへのメッセージ (0x3B) またはダウンロード データ メッセージ (0x3C) を示している場合、セクションは DSM-CC ヘッダー構文を使用する。この場合、SECTION ポインタを DSMCC_SECTION ポインタにキャストできる。

次のコードは、Header メンバ内のビット フィールドにアクセスする方法を示している。

SECTION *pSection; // セクション データを指す。

// Header フィールドを MPEG_HEADER_BITS 型に強制する。
MPEG_HEADER_BITS *pHeader = (MPEG_HEADER_BITS*)&pSection->Header.W;

// ここで pHeader ポインタを使用してビット フィールドにアクセスする。
WORD SectionLength = pHeader->SectionLength;

参照