ホーム › Media.DirectShow › BDA_DVBT2_L1_SIGNALLING_DATA
BDA_DVBT2_L1_SIGNALLING_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| L1Pre_TYPE | BYTE | 1 | +0 | +0 | DVB-T2 L1-pre信号のストリームタイプを示す値。 |
| L1Pre_BWT_S1_S2 | BYTE | 1 | +1 | +1 | 帯域拡張・S1/S2プリアンブルシグナリングを格納するバイト。 |
| L1Pre_REPETITION_GUARD_PAPR | BYTE | 1 | +2 | +2 | L1反復・ガードインターバル・PAPR低減方式を格納するバイト。 |
| L1Pre_MOD_COD_FEC | BYTE | 1 | +3 | +3 | L1-post部の変調方式・符号化率・FEC種別を格納するバイト。 |
| L1Pre_POSTSIZE_INFO_PILOT | BYTE | 5 | +4 | +4 | L1-postサイズ情報とパイロットパターンを格納するバイト。 |
| L1Pre_TX_ID_AVAIL | BYTE | 1 | +9 | +9 | 送信機識別(TX_ID)信号の利用可否を示すバイト。 |
| L1Pre_CELL_ID | BYTE | 2 | +10 | +10 | セルID。送信セルを識別する値の一部。 |
| L1Pre_NETWORK_ID | BYTE | 2 | +12 | +12 | ネットワークID。DVB-T2ネットワークを識別する値の一部。 |
| L1Pre_T2SYSTEM_ID | BYTE | 2 | +14 | +14 | T2システムID。T2システムを識別する値の一部。 |
| L1Pre_NUM_T2_FRAMES | BYTE | 1 | +16 | +16 | スーパーフレーム内のT2フレーム数を示すバイト。 |
| L1Pre_NUM_DATA_REGENFLAG_L1POSTEXT | BYTE | 2 | +17 | +17 | データシンボル数・L1再生成フラグ・L1-post拡張を格納するバイト。 |
| L1Pre_NUMRF_CURRENTRF_RESERVED | BYTE | 2 | +19 | +19 | RF数・現在のRFインデックス・予約ビットを格納するバイト。 |
| L1Pre_CRC32 | BYTE | 4 | +21 | +21 | L1-pre信号のCRC32検査値を格納するバイト。 |
| L1PostData | BYTE | 1 | +25 | +25 | L1-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 Structureimport 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