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

BDA_DVBT2_L1_SIGNALLING_DATA

構造体
サイズx64: 26 バイト / x86: 26 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
L1Pre_TYPEBYTE1+0+0DVB-T2 L1-pre信号のストリームタイプを示す値。
L1Pre_BWT_S1_S2BYTE1+1+1帯域拡張・S1/S2プリアンブルシグナリングを格納するバイト。
L1Pre_REPETITION_GUARD_PAPRBYTE1+2+2L1反復・ガードインターバル・PAPR低減方式を格納するバイト。
L1Pre_MOD_COD_FECBYTE1+3+3L1-post部の変調方式・符号化率・FEC種別を格納するバイト。
L1Pre_POSTSIZE_INFO_PILOTBYTE5+4+4L1-postサイズ情報とパイロットパターンを格納するバイト。
L1Pre_TX_ID_AVAILBYTE1+9+9送信機識別(TX_ID)信号の利用可否を示すバイト。
L1Pre_CELL_IDBYTE2+10+10セルID。送信セルを識別する値の一部。
L1Pre_NETWORK_IDBYTE2+12+12ネットワークID。DVB-T2ネットワークを識別する値の一部。
L1Pre_T2SYSTEM_IDBYTE2+14+14T2システムID。T2システムを識別する値の一部。
L1Pre_NUM_T2_FRAMESBYTE1+16+16スーパーフレーム内のT2フレーム数を示すバイト。
L1Pre_NUM_DATA_REGENFLAG_L1POSTEXTBYTE2+17+17データシンボル数・L1再生成フラグ・L1-post拡張を格納するバイト。
L1Pre_NUMRF_CURRENTRF_RESERVEDBYTE2+19+19RF数・現在のRFインデックス・予約ビットを格納するバイト。
L1Pre_CRC32BYTE4+21+21L1-pre信号のCRC32検査値を格納するバイト。
L1PostDataBYTE1+25+25L1-post部の可変長データ配列。先頭1バイトを起点とする。

各言語での定義

#include <windows.h>

// BDA_DVBT2_L1_SIGNALLING_DATA  (x64 26 / x86 26 バイト)
typedef struct BDA_DVBT2_L1_SIGNALLING_DATA {
    BYTE L1Pre_TYPE;
    BYTE L1Pre_BWT_S1_S2;
    BYTE L1Pre_REPETITION_GUARD_PAPR;
    BYTE L1Pre_MOD_COD_FEC;
    BYTE L1Pre_POSTSIZE_INFO_PILOT[5];
    BYTE L1Pre_TX_ID_AVAIL;
    BYTE L1Pre_CELL_ID[2];
    BYTE L1Pre_NETWORK_ID[2];
    BYTE L1Pre_T2SYSTEM_ID[2];
    BYTE L1Pre_NUM_T2_FRAMES;
    BYTE L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT[2];
    BYTE L1Pre_NUMRF_CURRENTRF_RESERVED[2];
    BYTE L1Pre_CRC32[4];
    BYTE L1PostData[1];
} BDA_DVBT2_L1_SIGNALLING_DATA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct BDA_DVBT2_L1_SIGNALLING_DATA
{
    public byte L1Pre_TYPE;
    public byte L1Pre_BWT_S1_S2;
    public byte L1Pre_REPETITION_GUARD_PAPR;
    public byte L1Pre_MOD_COD_FEC;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public byte[] L1Pre_POSTSIZE_INFO_PILOT;
    public byte L1Pre_TX_ID_AVAIL;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] L1Pre_CELL_ID;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] L1Pre_NETWORK_ID;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] L1Pre_T2SYSTEM_ID;
    public byte L1Pre_NUM_T2_FRAMES;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] L1Pre_NUMRF_CURRENTRF_RESERVED;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public byte[] L1Pre_CRC32;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] public byte[] L1PostData;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure BDA_DVBT2_L1_SIGNALLING_DATA
    Public L1Pre_TYPE As Byte
    Public L1Pre_BWT_S1_S2 As Byte
    Public L1Pre_REPETITION_GUARD_PAPR As Byte
    Public L1Pre_MOD_COD_FEC As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=5)> Public L1Pre_POSTSIZE_INFO_PILOT() As Byte
    Public L1Pre_TX_ID_AVAIL As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public L1Pre_CELL_ID() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public L1Pre_NETWORK_ID() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public L1Pre_T2SYSTEM_ID() As Byte
    Public L1Pre_NUM_T2_FRAMES As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public L1Pre_NUMRF_CURRENTRF_RESERVED() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public L1Pre_CRC32() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=1)> Public L1PostData() As Byte
End Structure
import ctypes
from ctypes import wintypes

class BDA_DVBT2_L1_SIGNALLING_DATA(ctypes.Structure):
    _fields_ = [
        ("L1Pre_TYPE", ctypes.c_ubyte),
        ("L1Pre_BWT_S1_S2", ctypes.c_ubyte),
        ("L1Pre_REPETITION_GUARD_PAPR", ctypes.c_ubyte),
        ("L1Pre_MOD_COD_FEC", ctypes.c_ubyte),
        ("L1Pre_POSTSIZE_INFO_PILOT", ctypes.c_ubyte * 5),
        ("L1Pre_TX_ID_AVAIL", ctypes.c_ubyte),
        ("L1Pre_CELL_ID", ctypes.c_ubyte * 2),
        ("L1Pre_NETWORK_ID", ctypes.c_ubyte * 2),
        ("L1Pre_T2SYSTEM_ID", ctypes.c_ubyte * 2),
        ("L1Pre_NUM_T2_FRAMES", ctypes.c_ubyte),
        ("L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT", ctypes.c_ubyte * 2),
        ("L1Pre_NUMRF_CURRENTRF_RESERVED", ctypes.c_ubyte * 2),
        ("L1Pre_CRC32", ctypes.c_ubyte * 4),
        ("L1PostData", ctypes.c_ubyte * 1),
    ]
#[repr(C)]
pub struct BDA_DVBT2_L1_SIGNALLING_DATA {
    pub L1Pre_TYPE: u8,
    pub L1Pre_BWT_S1_S2: u8,
    pub L1Pre_REPETITION_GUARD_PAPR: u8,
    pub L1Pre_MOD_COD_FEC: u8,
    pub L1Pre_POSTSIZE_INFO_PILOT: [u8; 5],
    pub L1Pre_TX_ID_AVAIL: u8,
    pub L1Pre_CELL_ID: [u8; 2],
    pub L1Pre_NETWORK_ID: [u8; 2],
    pub L1Pre_T2SYSTEM_ID: [u8; 2],
    pub L1Pre_NUM_T2_FRAMES: u8,
    pub L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT: [u8; 2],
    pub L1Pre_NUMRF_CURRENTRF_RESERVED: [u8; 2],
    pub L1Pre_CRC32: [u8; 4],
    pub L1PostData: [u8; 1],
}
import "golang.org/x/sys/windows"

type BDA_DVBT2_L1_SIGNALLING_DATA struct {
	L1Pre_TYPE byte
	L1Pre_BWT_S1_S2 byte
	L1Pre_REPETITION_GUARD_PAPR byte
	L1Pre_MOD_COD_FEC byte
	L1Pre_POSTSIZE_INFO_PILOT [5]byte
	L1Pre_TX_ID_AVAIL byte
	L1Pre_CELL_ID [2]byte
	L1Pre_NETWORK_ID [2]byte
	L1Pre_T2SYSTEM_ID [2]byte
	L1Pre_NUM_T2_FRAMES byte
	L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT [2]byte
	L1Pre_NUMRF_CURRENTRF_RESERVED [2]byte
	L1Pre_CRC32 [4]byte
	L1PostData [1]byte
}
type
  BDA_DVBT2_L1_SIGNALLING_DATA = record
    L1Pre_TYPE: Byte;
    L1Pre_BWT_S1_S2: Byte;
    L1Pre_REPETITION_GUARD_PAPR: Byte;
    L1Pre_MOD_COD_FEC: Byte;
    L1Pre_POSTSIZE_INFO_PILOT: array[0..4] of Byte;
    L1Pre_TX_ID_AVAIL: Byte;
    L1Pre_CELL_ID: array[0..1] of Byte;
    L1Pre_NETWORK_ID: array[0..1] of Byte;
    L1Pre_T2SYSTEM_ID: array[0..1] of Byte;
    L1Pre_NUM_T2_FRAMES: Byte;
    L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT: array[0..1] of Byte;
    L1Pre_NUMRF_CURRENTRF_RESERVED: array[0..1] of Byte;
    L1Pre_CRC32: array[0..3] of Byte;
    L1PostData: array[0..0] of Byte;
  end;
const BDA_DVBT2_L1_SIGNALLING_DATA = extern struct {
    L1Pre_TYPE: u8,
    L1Pre_BWT_S1_S2: u8,
    L1Pre_REPETITION_GUARD_PAPR: u8,
    L1Pre_MOD_COD_FEC: u8,
    L1Pre_POSTSIZE_INFO_PILOT: [5]u8,
    L1Pre_TX_ID_AVAIL: u8,
    L1Pre_CELL_ID: [2]u8,
    L1Pre_NETWORK_ID: [2]u8,
    L1Pre_T2SYSTEM_ID: [2]u8,
    L1Pre_NUM_T2_FRAMES: u8,
    L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT: [2]u8,
    L1Pre_NUMRF_CURRENTRF_RESERVED: [2]u8,
    L1Pre_CRC32: [4]u8,
    L1PostData: [1]u8,
};
type
  BDA_DVBT2_L1_SIGNALLING_DATA {.bycopy.} = object
    L1Pre_TYPE: uint8
    L1Pre_BWT_S1_S2: uint8
    L1Pre_REPETITION_GUARD_PAPR: uint8
    L1Pre_MOD_COD_FEC: uint8
    L1Pre_POSTSIZE_INFO_PILOT: array[5, uint8]
    L1Pre_TX_ID_AVAIL: uint8
    L1Pre_CELL_ID: array[2, uint8]
    L1Pre_NETWORK_ID: array[2, uint8]
    L1Pre_T2SYSTEM_ID: array[2, uint8]
    L1Pre_NUM_T2_FRAMES: uint8
    L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT: array[2, uint8]
    L1Pre_NUMRF_CURRENTRF_RESERVED: array[2, uint8]
    L1Pre_CRC32: array[4, uint8]
    L1PostData: array[1, uint8]
struct BDA_DVBT2_L1_SIGNALLING_DATA
{
    ubyte L1Pre_TYPE;
    ubyte L1Pre_BWT_S1_S2;
    ubyte L1Pre_REPETITION_GUARD_PAPR;
    ubyte L1Pre_MOD_COD_FEC;
    ubyte[5] L1Pre_POSTSIZE_INFO_PILOT;
    ubyte L1Pre_TX_ID_AVAIL;
    ubyte[2] L1Pre_CELL_ID;
    ubyte[2] L1Pre_NETWORK_ID;
    ubyte[2] L1Pre_T2SYSTEM_ID;
    ubyte L1Pre_NUM_T2_FRAMES;
    ubyte[2] L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT;
    ubyte[2] L1Pre_NUMRF_CURRENTRF_RESERVED;
    ubyte[4] L1Pre_CRC32;
    ubyte[1] L1PostData;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; BDA_DVBT2_L1_SIGNALLING_DATA サイズ: 26 バイト(x64)
dim st, 7    ; 4byte整数×7(構造体サイズ 26 / 4 切り上げ)
; L1Pre_TYPE : BYTE (+0, 1byte)  poke st,0,値  /  値 = peek(st,0)
; L1Pre_BWT_S1_S2 : BYTE (+1, 1byte)  poke st,1,値  /  値 = peek(st,1)
; L1Pre_REPETITION_GUARD_PAPR : BYTE (+2, 1byte)  poke st,2,値  /  値 = peek(st,2)
; L1Pre_MOD_COD_FEC : BYTE (+3, 1byte)  poke st,3,値  /  値 = peek(st,3)
; L1Pre_POSTSIZE_INFO_PILOT : BYTE (+4, 5byte)  varptr(st)+4 を基点に操作(5byte:入れ子/配列)
; L1Pre_TX_ID_AVAIL : BYTE (+9, 1byte)  poke st,9,値  /  値 = peek(st,9)
; L1Pre_CELL_ID : BYTE (+10, 2byte)  varptr(st)+10 を基点に操作(2byte:入れ子/配列)
; L1Pre_NETWORK_ID : BYTE (+12, 2byte)  varptr(st)+12 を基点に操作(2byte:入れ子/配列)
; L1Pre_T2SYSTEM_ID : BYTE (+14, 2byte)  varptr(st)+14 を基点に操作(2byte:入れ子/配列)
; L1Pre_NUM_T2_FRAMES : BYTE (+16, 1byte)  poke st,16,値  /  値 = peek(st,16)
; L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT : BYTE (+17, 2byte)  varptr(st)+17 を基点に操作(2byte:入れ子/配列)
; L1Pre_NUMRF_CURRENTRF_RESERVED : BYTE (+19, 2byte)  varptr(st)+19 を基点に操作(2byte:入れ子/配列)
; L1Pre_CRC32 : BYTE (+21, 4byte)  varptr(st)+21 を基点に操作(4byte:入れ子/配列)
; L1PostData : BYTE (+25, 1byte)  varptr(st)+25 を基点に操作(1byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global BDA_DVBT2_L1_SIGNALLING_DATA
    #field byte L1Pre_TYPE
    #field byte L1Pre_BWT_S1_S2
    #field byte L1Pre_REPETITION_GUARD_PAPR
    #field byte L1Pre_MOD_COD_FEC
    #field byte L1Pre_POSTSIZE_INFO_PILOT 5
    #field byte L1Pre_TX_ID_AVAIL
    #field byte L1Pre_CELL_ID 2
    #field byte L1Pre_NETWORK_ID 2
    #field byte L1Pre_T2SYSTEM_ID 2
    #field byte L1Pre_NUM_T2_FRAMES
    #field byte L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT 2
    #field byte L1Pre_NUMRF_CURRENTRF_RESERVED 2
    #field byte L1Pre_CRC32 4
    #field byte L1PostData 1
#endstruct

stdim st, BDA_DVBT2_L1_SIGNALLING_DATA        ; NSTRUCT 変数を確保
st->L1Pre_TYPE = 100
mes "L1Pre_TYPE=" + st->L1Pre_TYPE