0% found this document useful (0 votes)
13 views93 pages

DTAPI Reference - Multi-PLP Extensions

The document is a reference manual for the DTAPI Multi-PLP Extensions, detailing various data structures and parameters used for handling transport streams in DVB-C2, DVB-T2, and ATSC 3.0. It includes structures for input and output parameters, such as DtBigTsSplitPars for Big-TS splitting, DtPlpInpPars for specifying input streams, and DtVirtualOutPars for output data types. The manual serves as a comprehensive guide for developers working with these protocols and their associated data structures.

Uploaded by

jofrecarneiro
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views93 pages

DTAPI Reference - Multi-PLP Extensions

The document is a reference manual for the DTAPI Multi-PLP Extensions, detailing various data structures and parameters used for handling transport streams in DVB-C2, DVB-T2, and ATSC 3.0. It includes structures for input and output parameters, such as DtBigTsSplitPars for Big-TS splitting, DtPlpInpPars for specifying input streams, and DtVirtualOutPars for output data types. The manual serves as a comprehensive guide for developers working with these protocols and their associated data structures.

Uploaded by

jofrecarneiro
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 93

DTAPI

Multi-PLP Extensions

REFERENCE
Apr 2025

1
DTAPI – Multi-PLP Extensions
Reference Manual

Table of Contents

Structures .......................................................... 3 DtAtsc3Pars..................................................... 54


Struct DtBigTsSplitPars ................................................ 3 Class DtAtsc3Pars .....................................................54
Struct DtComplexFloat ................................................ 5 DtAtsc3Pars::CheckValidity .......................................60
Struct DtPlpInpPars ..................................................... 6 DtDvbC2Pars::GetParamInfo ....................................62
Struct DtTestPointOutPars ........................................... 7 DtDvbC2Pars .................................................. 63
Struct DtVirtualOutData .............................................. 8
Class DtDvbC2Pars ..................................................63
Struct DtVirtualOutPars ............................................. 10
DtDvbC2Pars::CheckValidity .....................................66
ATSC 3.0 Data Structures ................................ 11 DtDvbC2Pars::GetParamInfo ....................................67
Struct DtAtsc3SubframeInfo ...................................... 11 DtDvbT2ComponentPars ................................. 68
Struct DtAtsc3ParamInfo ........................................... 12
DtDvbT2ComponentPars ..........................................68
Struct DtAtsc3PlpInfo ................................................ 13
Struct DtAtsc3PlpPars ................................................ 14 DtDvbT2Pars ................................................... 73
Struct DtAtsc3SubframePars ...................................... 19 DtDvbT2Pars ............................................................73
DVB-C2 Data Structures .................................. 23 DtDvbT2Pars::CheckValidity ......................................74
DtDvbT2Pars::GetParamInfo .....................................75
Struct DtDvbC2DSlicePars ......................................... 23
DtDvbT2Pars::OptimisePlpNumBlocks .......................76
Struct DtDvbC2L1UpdateDSlicePars .......................... 25
Struct DtDvbC2L1UpdatePlpPars ............................... 26 DtIsdbTmmPars ............................................... 77
Struct DtDvbC2L1UpdatePars ................................... 27 Class DtIsdbTmmPars ...............................................77
Struct DtDvbC2ModStatus......................................... 28 DtIsdbTmmPars::CheckValidity ..................................78
Struct DtDvbC2NotchPars ......................................... 29 Callback Functions .......................................... 79
Struct DtDvbC2PaprPars ........................................... 30
DtTpWriteDataFunc ..................................................79
Struct DtDvbC2ParamInfo ......................................... 31
Struct DtDvbC2PlpPars ............................................. 32 Global Functions ............................................. 81
Struct DtDvbC2XFecFrameHeader ............................. 36 ::DtapiModPars2TsRate ............................................81
DVB-T2 Data Structures ................................... 37 DtMplpOutpChannel ....................................... 83
Struct DtDvbT2AuxPars ............................................. 37 DtMplpOutpChannel ................................................83
Struct DtDvbT2MiPars ............................................... 38 DtMplpOutpChannel::AttachVirtual ...........................84
Struct DtDvbT2ModStatus ......................................... 40 DtMplpOutpChannel::GetMplpFifoFree .....................85
Struct DtDvbT2PaprPars ............................................ 41 DtMplpOutpChannel::GetMplpFifoSize......................86
Struct DtDvbT2ParamInfo ......................................... 43 DtMplpOutpChannel::GetMplpModStatus .................87
Struct DtDvbT2PlpPars .............................................. 44 DtMplpOutpChannel::SetMplpChannelModelling ......88
Struct DtDvbT2RbmEvent .......................................... 48 DtMplpOutpChannel::SetModControl........................89
Struct DtDvbT2RbmValidation ................................... 52 DtMplpOutpChannel::WriteMplp ..............................91
Struct DtDvbT2TxSigPars ........................................... 53 DtMplpOutpChannel::WriteMplpPacket .....................92

Copyright © 2025 by DekTec Digital Video B.V.

DekTec Digital Video B.V. reserves the right to change products or specifications without notice. In-
formation furnished in this document is believed to be accurate and reliable, but DekTec assumes
no responsibility for any errors that may appear in this material.

2
DTAPI – Multi-PLP Extensions
Reference Manual

Structures

Struct DtBigTsSplitPars
Structure for specifying the parameters for the “Big-TS splitting” operation, which is defined for DVB-
C2 and DVB-T2. This operation splits one “big” Transport Stream into multiple SPTSes (Single Program
Transport Streams), one for each data PLP in the group. Each SPTS will contain one service and
adapted PSI/SI. The Transport Stream for the common PLP gets the common SI.
The parameters in this structure are used for the creation and modification of PAT, SDT and EIT tables
for a single PLP. Furthermore it specifies the PIDs to be included in the Transport Stream. This structure
is used in class DtPlpInPars.

struct DtBigTsSplitPars
{
bool m_Enabled; // Enable “Big-TS splitting”
bool m_IsCommonPlp; // Common PLP (yes/no)
bool m_SplitSdtIn; // SDT is already split (yes/no)
std::vector<int> m_Pids; // Series of PIDs to include
// Parameters below are not used in case m_IsCommonPlp == true
int m_OnwId; // Original Network ID of the Big TS
int m_TsId; // Transport Stream ID of the Big TS
int m_ServiceId; // ID of the service to include in PLP
int m_PmtPid; // PID of the PMT table of selected service
int m_NewTsId; // Transport Stream ID of the TS in the PLP
// Parameters below are not used in case m_SplitSdtIn == true
int m_SdtLoopDataLength; // SDT loop data length
unsigned char m_SdtLoopData[168]; // The SDT-actual loop data
};

Members
m_Enabled
If true, “Big-TS splitting” is enabled, otherwise it is disabled and the remaining parameters are
not used. Big-TS splitting is supported for DVB-C2 and DVB-T2. Must be set to false for ATSC
3.0.
m_IsCommonPlp
If true, the type of the associated PLP is a common PLP, otherwise the type is a data PLP.
m_SplitSdtIn
If true, the “Big TS” is “MPLP-prepared” and already contains separated SDT subtables for each
PLP.
m_Pids
Series of PID values that specify the elementary streams to be included in Transport Stream for
the associated PLP (e.g. for the data PLP: service components, ECM and PCR PIDs and for the
common PLP: CAT, NIT, TOT, TDT-table PIDs).
The following parameters are not used if parameters are related to a common PLP (m_IsCommonPlp
equals true).
m_OnwId, m_TsId, m_ServiceId
Identifies a service from the “Big TS” to include in the Transport Stream for the PLP.

3
DTAPI – Multi-PLP Extensions
Reference Manual

m_PmtPid
The PID of the PMT-table of the selected service, needed for the creation of a new PAT-table.
m_NewTsId
Specifies the Transport Stream ID of the newly created TS in the PLP.
The following parameters are not used if the “Big TS” already contains separated SDT subtables for
each PLP (m_SplitSdtIn equals true); otherwise, a new SDT-actual table is created for the selected
service with the aid of the parameters below.
m_SdtLoopDataLength
Length of the new SDT-loop data for the selected service. The valid range is 0, 5 … 168.
m_SdtLoopData
Specifies the new SDT-actual loop data for the selected service. The SDT-loop data starts with
the service_id field and includes the SDT-loop descriptors. The maximum length of the SDT-loop
data is 168 bytes.

4
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtComplexFloat
Structure describing a complex floating-point number.

Struct DtComplexFloat
{
int m_Re; // Real part
int m_Im; // Imaginary part
};

Members
m_Re
The real part of the complex floating-point number.
m_Im
The imaginary part of the complex floating-point number.

5
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtPlpInpPars
Structure for specifying the input stream for a PLP. This structure is used in class DtAtsc3Pars,
DtDvbC2Pars, DtDvbT2ComponentPars and in class DtIsdbTmmPars, in an array of structs. The
index in the array corresponds to the index of the related PLP (or TS in case of ISDB-Tmm).

struct DtPlpInpPars
{
int m_FifoIdx; // Index of input FIFO
InDataType m_DataType; // Input data type
DtBigTsSplitPars m_BigTsSplit; // Big-TS splitting parameters
};

Members
m_FifoIdx
The index of the FIFO used by the associated PLP. PLPs in the same group that have “Big-TS”
splitting enabled can share the same input FIFO.
The index will be used in several methods that operate on a specific FIFO (e.g.
DtMplpOutpChannel::WriteMplp()).
The default value of m_FifoIdx is equal to the index in the array of DtPlpInpPars structs. For
writing data to the nth PLP (which is specified at index n in the array of DtPlpInpPars) you have
to use FIFO index n.
The valid range of m_FifoIdx is 0 … 255.
m_DataType
Specifies the type of the input data.
Value Meaning
ALP ATSC Link layer Protocol (ALP) packets
GSE Generic Stream Encapsulation (GSE) packets
TS188 188-byte TS packets
TS204 204-byte TS packets

m_BigTsSplit
Specifies (for this PLP) the parameters for the “Big-TS” splitting operation.

6
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtTestPointOutPars
Test-point data generation is specified by the Verification and Validation (V&V) group for ATSC 3.0,
DVB-C2 and DVB-T2 as a means for the verification and validation of the specifications. Structure
DtTestPointOutPars enables or disables test-point data generation, and – if enabled – specifies the
associated handler.
This structure is used in class DtAtsc3Pars, DtDvbC2Pars and in class DtDvbT2ComponentPars.

struct DtTestPointOutPars
{
bool m_Enabled; // Enable test points (yes/no)
void* m_pTpWriteDataOpaque; // Opaque pointer
DtTpWriteDataFunc* m_pTpWriteDataFunc; // Test-point data handler
};

Members
m_Enabled
If true, the generation of test point data is enabled. Whenever test point data is available, the
callback function is called and the test point data is passed to the callback function. Note that
test point data generation cannot be performed in real time.
m_pTpWriteDataOpaque
Opaque pointer that is passed to the callback function.
m_pTpWriteDataFunc
Pointer to the callback function of type DtTpWriteDataFunc that handles the generated test
point data.

7
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtVirtualOutData
Structure describing the type of output data generated by a virtual output.

struct DtVirtualOutData
{
OutDataType m_DataType; // Output data type
union {
struct { // 16-bit int I/Q samples
const unsigned char** m_pBuffer; // Array of buffers
int m_NumBuffers; // #Buffers
int m_NumBytes; // #Bytes in each buffer
} IqSamplesInt16;
struct { // 32-bit float I/Q samples
const unsigned char** m_pBuffer; // Array of buffers
int m_NumBuffers; // #Buffers
int m_NumBytes; // #Bytes in each buffer
} IqSamplesFloat32;
struct { // 188byte T2MI TS packets
const unsigned char* m_pBuffer; // Pointer to TS packet(s)
int m_NumBytes; // #Bytes
__int64 m_T2MiFrameNr; // T2MI frame counter
} T2MiTs188;
} u;
};

Members
m_DataType
Type of output data.
Value Meaning
IQ_INT16 Pairs of signed 16-bit integers in I, Q order, little Endian
IQ_FLOAT32 Pairs of 32-bit floats in I, Q order
T2MI_TS188 T2-MI packets encapsulated into DVB/MPEG Transport Stream
packets

u.IqSamplesInt16
Structure used in case m_DataType equals IQ_INT16.
u.IqSamplesInt16.m_pBuffer
Pointer to an array of m_NumBuffers pointers to buffers of length m_NumBytes.
The buffers contain pairs of signed 16-bit integers in I, Q order, little Endian.
u.IqSamplesInt16.m_NumBuffers
The number of buffers. There is one output buffer for each output channel (e.g. 2 buffers in case
of MISO).
u.IqSamplesInt16.m_NumBytes
The number of bytes in each buffer.
u.IqSamplesFloat32
Structure used in case m_DataType equals IQ_Float32.

8
DTAPI – Multi-PLP Extensions
Reference Manual

u.IqSamplesFloat32.m_pBuffer
Pointer to an array of m_NumBuffers pointers to buffers of m_NumBytes length.
The buffers contain pairs of 32-bit floats in I, Q order.
u.IqSamplesFloat32.m_NumBuffers
The number of buffers. There is one output buffer for each output channel (e.g. 2 buffers in case
of MISO).
u.IqSamplesFloat32.m_NumBytes
The number of bytes in each buffer.
u.T2MiTs188
Structure used in case m_DataType equals T2MI_TS188.
u.T2MiTs188.m_pBuffer
Pointer to a buffer with 188-byte Transport Packets encapsulating T2-MI packets.
u.T2MiTs188.m_NumBytes
The number of bytes in the buffer.
u.T2MiTs188.m_T2MiFrameNr
DVB-T2 superframe counter. The counter is incremented each time the buffer contains a packet
that contributes to a new DVB-T2 superframe. This parameter enables cutting of the output data
stream at DVB-T2 superframe boundaries.

9
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtVirtualOutPars
Structure for specifying the output data type in case the output data is generated for a virtual output.

struct DtVirtualOutPars
{
bool m_Enabled; // Parameters enabled
DtVirtualOutData::OutDataType m_DataType; // Output data type
double m_Gain; // RMS of the I/Q samples
};

Members
m_Enabled
If true, the parameters in DtVirutalOutPars overrule the default values; otherwise, default
output data type and gain will be used.
m_DataType
Specifies the type of output data for the virtual output.
Value Meaning
IQ_INT16 Pairs of signed 16-bit integers in I, Q order, little Endian
IQ_FLOAT32 Pairs of 32-bit floats in I, Q order
T2MI_TS188 T2-MI packets encapsulated into DVB/MPEG Transport Stream
packets

m_Gain
If the output data type is either IQ_INT16 or IQ_FLOAT32, this field specifies the Root Mean
Square (RMS) of the complex samples. This value should be set as large as possible to have the
largest SNR, but small enough to avoid saturation. When a DekTec card is used for play-out of
the I/Q samples, the value 5000 is an appropriate value.

10
DTAPI – Multi-PLP Extensions
Reference Manual

ATSC 3.0 Data Structures

Struct DtAtsc3SubframeInfo
Structure containing the ATSC 3.0 “derived” parameters for subframes. This structure is contained in
DtAtsc3ParamInfo.
struct DtAtsc3SubframeInfo
{
int m_TotalNumDataCells; // Number of data cells available for PLPs
int m_NumDummyCells; // Number of dummy cells
int m_NumCellsInDataSym; // Number of cells in data symbol
int m_NumCellsInSbsSym; // Number of cells in SBS symbols
std::vector<DtAtsc3PlpInfo> m_Plps; // PLP information
};

Members
m_TotalNumDataCells
Total number of data cells available for PLPs including the preamble PLP cells for the first sub-
frame.
m_NumDummyCells
Number of dummy cells per subframe.
m_NumCellsInDataSym
Number of cells in each data symbol.
m_NumCellsInSbsSym
Number of cells in each Subframe Boundary Symbol.
m_Plps
A vector containing the ATSC 3.0 “derived” parameters for the PLPs.

11
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtAtsc3ParamInfo
Structure containing the ATSC 3.0 “derived” parameters: the value of the members follows from the
basic ATSC 3.0 modulation parameters.
This structure is an output parameter of DtAtsc3Pars::GetParamInfo.

struct DtAtsc3ParamInfo
{
int m_L1BasicNumDataCells; //
Number of cells in L1-Basic
int m_L1DetailNumDataCells; //
Number of cells in L1-Detail
int m_PreambleNumSymbols; //
Number of preamble symbols
int m_NumCellsInFirstPreamble; //
Number of cells in first
//
preamble symbol
int m_NumCellsInNextPreamble; //
Number of cells in next
//
preamble symbol(s)
int m_NumPlpCellsInPreambles; //
Number of cells in the preamble
//
available for PLPs
int m_FrameLength; //
Length of the frame including
//
bootstrap, in number of samples
std::vector<DtAtsc3SubframeInfo> m_Subframes; // Subframe information
};

Members
m_L1BasicNumDataCells
Number of L1-Basic data cells.
m_L1DetailNumDataCells
Number of L1-Detail data signaling cells (in one or more preamble symbols).
m_PreambleNumSymbols
Number of preamble symbols.
m_NumCellsInFirstPreamble
Number of cells in the first preamble symbol.
m_NumCellsInFirstPreamble
Number of cells in the next preamble symbol(s).
m_NumPlpCellsInPreambles
Number of cells in the preamble available for PLPs.
m_FrameLength
Length of the frame including bootstrap, in number of samples.
m_Subframes
A vector containing the ATSC 3.0 “derived” parameters for the subframes.

12
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtAtsc3PlpInfo
Structure containing the ATSC 3.0 “derived” parameters for subframes. This structure is contained in
DtAtsc3SubframeInfo.
struct DtAtsc3PlpInfo
{
int m_BbFramerate; // Base band frame rate
int m_PlpBitrate; // PLP payload data bitrate
int m_PlpSize; // Number of PLP cells
int m_PlpStart; // PLP start cell
int m_PlpFecBlockSize; // Number of cells in a FEC Block
int m_NumTiMemoryCells; // Number of TI memory cells
};

Members
m_BbFramerate
Baseband frame rate in frames per second.
m_PlpBitrate
PLP payload data bitrate.
m_PlpSize
Number of PLP cells.
m_PlpStart
PLP start cell (absolute).
m_PlpFecBlockSize
Number of cells in a FEC Block.
m_NumTiMemoryCells
Number of Time Interleaver memory cells used.

13
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtAtsc3PlpPars
Structure specifying the ATSC 3.0 modulation parameters for one physical layer pipe. This structure is
used in struct DtAtsc3SubframePars.

struct DtAtsc3PlpPars
{
int m_Id; // PLP ID
bool m_LlsFlag; // Low level signaling present(yes/no)
int m_Layer; // Layer (core/enhanced)
int m_Modulation; // Modulation type
int m_CodeRate; // Code rate
int m_FecCodeLength; // FEC code length
int m_FecOuterCode; // FEC outer code type
int m_LdmInjectLevel; // LDM injection level
bool m_BbFrameCounter; // Enable BB-frame counter
// MIMO PLP parameters
bool m_PlpMimo; // Enable MIMO for this PLP
bool m_PlpMimoStreamCombining; // Enable stream combining option
bool m_PlpMimoIqInterleaving; // Enable IQ interleaving option
bool m_PlpMimoPhaseHopping; // Enable phase hopping option
// Core layer PLP parameters
int m_PlpType; // PLP-type (dispersed/non-dispersed)
int m_NumSubslices; // Number of subslices
int m_SubsliceInterval; // Subslice interval
int m_TiMode; // Time interleaver mode
int m_CtiDepth; // Convolutional time interleaver depth
bool m_TiExtInterleaving; // Enable extended interleaving (yes/no)
// HTI interleaving parameters
bool m_HtiInterSubframe; // Enable inter-subframe interleaving
int m_HtiNumTiBlocks; // Number of TI blocks
int m_HtiNumFecBlocksMax; // Maximum number of FEC blocks per
// interleaving frame
int m_HtiCellInterleaver; // Enable the cell interleaver
// Schedueling parameters
int m_CoreLayerPlpId; // PLP ID of the corresponding core layer
int m_HtiNumFecBlocks; // Number of FEC blocks per subframe
int m_PlpSize; // PLP size in number of cells per subframe
int m_PlpStart; // PLP starting cell
};

Members
m_Id
Unique identification of the PLP within an ATSC-system. The valid range is 0 … 63.
m_LlsFlag
If true, indicates the PLP carries low level signalling information.
m_Layer
Specifies whether the PLP belongs to the core or to the enhanced layer.
Value Meaning
DTAPI_ATSC3_LAYER_CORE Core layer

14
DTAPI – Multi-PLP Extensions
Reference Manual

DTAPI_ATSC3_LAYER_ENHANCED Enhanced layer

m_Modulation
Modulation used by the PLP.
Value Meaning
DTAPI_ATSC3_QPSK QPSK
DTAPI_ATSC3_QAM16 16-QAM
DTAPI_ATSC3_QAM64 64-QAM
DTAPI_ATSC3_QAM256 256-QAM
DTAPI_ATSC3_QAM1024 1024-QAM
DTAPI_ATSC3_QAM4096 4096-QAM

m_CodeRate
Convolutional coding rate used by the PLP.
Value Meaning
DTAPI_ATSC3_COD_2_15 2/15
DTAPI_ATSC3_COD_3_15 3/15
DTAPI_ATSC3_COD_4_15 4/15
DTAPI_ATSC3_COD_5_15 5/15
DTAPI_ATSC3_COD_6_15 6/15
DTAPI_ATSC3_COD_7_15 7/15
DTAPI_ATSC3_COD_8_15 8/15
DTAPI_ATSC3_COD_9_15 9/15
DTAPI_ATSC3_COD_10_15 10/15
DTAPI_ATSC3_COD_11_15 11/15
DTAPI_ATSC3_COD_12_15 12/15
DTAPI_ATSC3_COD_13_15 13/15

m_FecCodeLength
The LDPC FEC coding used by the PLP.
Value Meaning

DTAPI_ATSC3_LDPC_16K 16K LDPC


DTAPI_ATSC3_LDPC_64K 64K LDPC

15
DTAPI – Multi-PLP Extensions
Reference Manual

m_FecOuterCode
The FEC outer code type used by the PLP.
Value Meaning

DTAPI_ATSC3_OUTER_BCH BCH outer code


DTAPI_ATSC3_OUTER_CRC CRC outer code
DTAPI_ATSC3_OUTER_NONE No outer code

m_LdmInjectLevel
Specifies the enhanced layer injection level relative to the core PLP. Used when Layer=Enhanced.
Values 0…9 give an injection level: m_LdmInjectLevel / 2.0 dB.
Values 10…30 give an injection level: m_LdmInjectLevel - 5.0 dB.
m_BbFrameCounter
If true, the Baseband Header extension counter is used.
m_PlpMimo
If true, MIMO for this PLP is enabled. Only allowed if m_MimoMixed in the associated subframe
is true.
m_PlpMimoStreamCombining
If true, the stream combining option of the MIMO precoding is enabled.
m_PlpMimoIqInterleaving
If true, the IQ polarization interleaving option of the MIMO precoding is enabled.
m_PlpMimoPhaseHopping
If true, the phase hopping option of the MIMO precoding is enabled.
m_PlpType
Specifies whether the PLP is dispersed or non-dispersed. Used for core PLPs.
Value Meaning
DTAPI_ATSC3_PLPTYPE_NONDISP Non-dispersed PLP-type
DTAPI_ATSC3_PLPTYPE_DISP Dispersed PLP-type

m_NumSubslices
Number of subslices. The valid range is 1...16384. Only used for core PLPs where the PLP type
is dispersed.
m_SubsliceInterval
Subslice interval. The valid range is 1... 16777215. Only used for core PLPs where the PLP type
is dispersed.
m_TiMode
Time interleaver mode. Only used for core PLPs.
Value Meaning

DTAPI_ATSC3_TIMODE_NONE No time interleaving


DTAPI_ATSC3_TIMODE_CTI Convolutional time interleaver (CTI) mode
DTAPI_ATSC3_TIMODE_HTI Hybrid time interleaver (HTI) mode

16
DTAPI – Multi-PLP Extensions
Reference Manual

m_CtiDepth
Convolutional time interleaver (CTI) depth. Only used for core PLPs where the time interleaver
mode is CTI.
Value Meaning

DTAPI_ATSC3_CTIDEPTH_512 512 rows


DTAPI_ATSC3_CTIDEPTH_724 724 rows
DTAPI_ATSC3_CTIDEPTH_887 887 rows (1254 rows if extended interleaving is used)
DTAPI_ATSC3_CTIDEPTH_1024 1024 rows (1448 rows if extended interleaving is used)

m_TiExtInterleaving
If true, extended interleaving is used for this PLP. Only used for core PLPs.
m_HtiInterSubframe
If false, the inter-subframe interleaving is not used (i.e. only intra-subframe interleaving is used).
If true, interleaving is used with one TI block per interleaving frame spread over multiple sub-
frames. Only used for core PLPs where the time interleaver mode is HTI.
m_HtiNumTiBlocks
If the HTI inter-subframe interleaving is disabled: the number of time interleaver blocks per
interleaving frame. If HTI inter-subframe interleaving is enabled: the number of subframes over
which cells from one time interleaver block are carried.
The valid range is 1 … 16. Only used for core PLPs where the time interleaver mode is HTI.
m_HtiNumFecBlocksMax
The maximum number of FEC blocks per interleaving frame for the current PLP. The valid range
is 1 ... 4096. Only used for core PLPs where the time interleaver mode is HTI.
m_HtiCellInterleaver
If true, enable the HTI cell interleaving. Only used for core PLPs where the time interleaver mode
is HTI.
m_CoreLayerPlpId
If enhanced layer PLP, the PLP ID of the corresponding core layer PLP. Currently the enhanced
layer is scheduled with the same number of cells as the core layer. The valid range is 0 … 63.
Only used for enhanced PLPs.
m_HtiNumFecBlocks
The number of FEC blocks per interleaving frame for the current PLP. The valid range is 1 ...
4096. Only used for core PLPs where the time interleaver mode is HTI.
m_PlpSize
For core PLPs: the number of cells per subframe, -1 means to use the full subframe.
For enhanced PLPs: the number of cells of the enhanced layer PLP, -1 means the complete size
of the core layer PLP (identified by m_CoreLayerPlpId).
The valid range is -1 ... 16777215. Only used if the time interleaver mode is None or CTI.
m_PlpStart
If set to -1, the PLP-start is automatically determined by allocating PLPs by increasing PLP index
assuming each PLP uses PLP-size cells (for non-dispersed PLPs) or ceil(PLP-size/number of sub-
slices) cells (for dispersed PLPs).
For complex FDM allocations the previous algorithm is not sufficient, and PLP-start must be set
manually. For core PLPs: the index of the starting cell of the PLP in the current subframe. For

17
DTAPI – Multi-PLP Extensions
Reference Manual

enhanced PLPs: the index of the starting cell of the PLP counting from the start of the correspond-
ing core PLP (identified by m_CoreLayerPlpId).
The valid range is -1 ... 16777215.

18
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtAtsc3SubframePars
Structure describing ATSC 3.0 parameters for one subframe. This structure is used in class
DtAtsc3Pars, in a vector of structs for the subframes.

struct DtAtsc3SubframePars
{
bool m_Mimo; // Enable MIMO
bool m_MimoMixed; // Enable mix of MIMO and SISO
int m_MisoNumTx; // Number of MISO transmitters
int m_MisoTxIndex; // MISO tranmitter index
int m_MisoTxIndexChan2; // MISO tranmitter index 2nd MIMO channel
int m_FftSize; // FFT-size
int m_ReducedCarriers; // Carrier reduction coefficient
int m_GuardInterval; // Guard interval
int m_PilotPattern; // Pilot pattern
int m_PilotBoost; // Pilot power boost
bool m_SbsFirst; // First symbol is a boundary symbol(yes/no)
bool m_SbsLast; // Last symbol is a boundary symbol(yes/no)
int m_NumOfdmSymbols; // Number of payload OFDM symbol
bool m_FreqInterleaver; // Enable frequency interleaver
std::<vector<DtAtsc3PlpPar> m_Plps; // PLPs
};

Members
m_Mimo
If true, MIMO is enabled for all PLPs in the subframe.
m_MimoMixed
If true, enable a mix of MIMO PLPs and SISO PLPs in the subframe.
The combination of m_Mimo and m_MimoMixed being true is invalid.
m_Miso
The MISO option used.
Value Meaning
DTAPI_ATSC3_MISO_NONE No MISO
DTAPI_ATSC3_MISO_64 MISO with 64 coefficients
DTAPI_ATSC3_MISO_256 MISO with 256 coefficients

m_MisoNumTx
The number of transmitters in a MISO transmission. Valid values values are 0 (No MISO), 2, 3
or 4.
m_MisoTxIndex
The transmitter index in a MISO transmission. The valid range is 0 … m_MisoNumTx-1.
In case of MIMO, the transmitter index for the first MIMO channel.
m_MisoTxIndexChan2
The transmitter index for the second MIMO channel in a MISO transmission. The valid range is
0 … m_MisoNumTx-1.

19
DTAPI – Multi-PLP Extensions
Reference Manual

m_FftSize
FFT-size.
Value Meaning
DTAPI_ATSC3_FFT_8K 8K FFT
DTAPI_ATSC3_FFT_16K 16K FFT
DTAPI_ATSC3_FFT_32K 32K FFT

m_ReducedCarriers
Specifies the carrier reduction. The valid range is 0 … 4.

20
DTAPI – Multi-PLP Extensions
Reference Manual

m_GuardInterval
The guard interval between data symbols.
Value Meaning
DTAPI_ATSC3_GI_1_192 GI1_192
DTAPI_ATSC3_GI_2_384 GI2_384
DTAPI_ATSC3_GI_3_512 GI3_512
DTAPI_ATSC3_GI_4_768 GI4_768
DTAPI_ATSC3_GI_5_1024 GI5_1024
DTAPI_ATSC3_GI_6_1536 GI6_1536
DTAPI_ATSC3_GI_7_2048 GI7_2048
DTAPI_ATSC3_GI_8_2432 GI8_2432
DTAPI_ATSC3_GI_9_3072 GI9_3072
DTAPI_ATSC3_GI_10_3648 GI10_3648
DTAPI_ATSC3_GI_11_4096 GI11_4096
DTAPI_ATSC3_GI_12_4864 GI12_4864

m_PilotPatern
The scattered pilot pattern.
Value Meaning
DTAPI_ATSC3_PP_3_2 SP3_2 / MP3_2
DTAPI_ATSC3_PP_3_4 SP3_4 / MP3_4
DTAPI_ATSC3_PP_4_2 SP4_2 / MP4_2
DTAPI_ATSC3_PP_4_4 SP4_4 / MP4_4
DTAPI_ATSC3_PP_6_2 SP6_2 / MP6_2
DTAPI_ATSC3_PP_6_4 SP6_4 / MP6_4
DTAPI_ATSC3_PP_8_2 SP8_2 / MP8_2
DTAPI_ATSC3_PP_8_4 SP8_4 / MP8_4
DTAPI_ATSC3_PP_12_2 SP12_2 / MP12_2
DTAPI_ATSC3_PP_12_4 SP12_4 / MP12_4
DTAPI_ATSC3_PP_16_2 SP16_2 / MP16_2
DTAPI_ATSC3_PP_16_4 SP16_4 / MP16_4
DTAPI_ATSC3_PP_24_2 SP24_2 / MP24_2
DTAPI_ATSC3_PP_24_4 SP24_4 / MP24_4
DTAPI_ATSC3_PP_32_2 SP32_2 / MP32_2
DTAPI_ATSC3_PP_32_4 SP32_4 / MP32_4

21
DTAPI – Multi-PLP Extensions
Reference Manual

m_PilotBoost
Specifies the power of the scattered pilots. The valid range is 0… 4.
m_SbsFirst
If true, the first symbol of the subframe is a subframe boundary symbol.
m_SbsLast
If true, the last symbol of the subframe is a subframe boundary symbol.
m_NumOfdmSymbols
Specifies the total number of data payload OFDM symbols, including any subframe-boundary
symbol(s) within the current subframe. The valid range is 1 … 2048.
m_FreqInterleaver
If true, the frequency interleaver is enabled and used, otherwise the frequency interleaver is
bypassed and not used.
m_Plps
A vector specifying the ATSC 3.0 modulation parameters for the physical layer pipes.
The valid size is 1 … 64.

22
DTAPI – Multi-PLP Extensions
Reference Manual

DVB-C2 Data Structures

Struct DtDvbC2DSlicePars
Structure describing DVB-C2 parameters for one data slice. This structure is used in class
DtDvbC2Pars, in an array of DTAPI_DVBC2_NUM_DSLICE_MAX structs for the data slices.

struct DtDvbC2DSlicePars
{
int m_Id; // Data slice ID
int m_TunePosition; // Tune position
int m_OffsetLeft; // Data slice left offset (start position)
int m_OffsetRight; // Data slice right offset (end position)
int m_TiDepth; // Time interleaving depth
int m_Type; // Data slice type
int m_FecHdrType; // FEC header type
bool m_ConstConfig; // Constant data slice configuration(yes/no)
bool m_LeftNotch; // Left notch present (yes/no)
std::<vector<DtDvbC2PlpPar> m_Plps; // PLPs
};

Members
m_Id
Unique identification of the data slice within a C2-System. The valid range is 0 … 255.
m_TunePosition
Tune position of the associated data slice relative to the start frequency of the C2-System, in
multiples of pilot carrier spacing.
The valid range is 0 … 8191 if the guard interval is 1/128.
The valid range is 0 … 16383 if the guard interval is 1/64.
m_OffsetLeft
Start position of the associated data slice by means of the distance to the left from the tuning
position, in multiples of the pilot carrier spacing.
The valid range is -128 … 127 if the guard interval is 1/128.
The valid range is -256 … 255 if the guard interval is 1/64.
m_OffsetRight
End position of the associated data slice by means of the distance to the right from the tuning
position, in multiples of the pilot carrier spacing.
The valid range is -128 … 127 if the guard interval is 1/128.
The valid range is -256 … 255 if the guard interval is 1/64.
If m_OffsetLeft equals m_OffsetRight, the data slice is empty and no input streams are
created for the PLPs of the data slice.

23
DTAPI – Multi-PLP Extensions
Reference Manual

m_TiDepth
Time interleaving depth within the associated data slice.
Value Meaning
DTAPI_DVBC2_TIDEPTH_NONE No time interleaving
DTAPI_DVBC2_TIDEPTH_4 4 OFDM symbols
DTAPI_DVBC2_TIDEPTH_8 8 OFDM symbols
DTAPI_DVBC2_TIDEPTH_16 16 OFDM symbols

m_Type
Data slice type.
Value Meaning
DTAPI_DVBC2_DSLICE_TYPE_1 Data slice type 1
DTAPI_DVBC2_DSLICE_TYPE_2 Data slice type 2

m_FecHdrType
FEC frame header type.
Value Meaning
DTAPI_DVBC2_FECHDR_TYPE_ROBUST Robust mode
DTAPI_DVBC2_FECHDR_TYPE_HEM High efficiency mode

m_ConstConfig
If true, indicates that the configuration of the associated data slice shall not change; otherwise,
the configuration is assumed to be variable.
m_LeftNotch
If true, indicates the presence of a left neighboured notch band.
m_Plps
A vector specifying the DVB-C2 modulation parameters for the physical layer pipes.

24
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2L1UpdateDSlicePars
Structure describing DVB-C2 parameter updates for one data slice. This structure is used in class
DtDvbC2L1UpdatePars.

struct DtDvbC2L1UpdateDSlicePars
{
bool m_Enable; // Enable the data slice (yes/no)
int m_OffsetLeft; // Updated data slice left offset
int m_OffsetRight; // Updated data slice right offset
std::vector<DtDvbC2L1UpdatePlpPar> m_Plps; // L1 PLP updates
};

Members
m_Enable
If true, the data slice is enabled, otherwise it is disabled and the remaining parameters are not
used. Only enabled data slices will occur in the L1 signalling.
Note that only “empty” data slices can be disabled. An empty data slice is either a data slice
where m_OffsetLeft== m_OffsetRight in the global configuration, or a data slice where
all PLPs have m_NoData==true.
m_OffsetLeft
Updated start position of the associated data slice by means of the distance to the left from the
tuning position, in multiples of the pilot carrier spacing.
The valid range is -128 … 127 if the guard interval is 1/128.
The valid range is -256 … 255 if the guard interval is 1/64.
m_OffsetRight
Updated end position of the associated data slice by means of the distance to the right from the
tuning position, in multiples of the pilot carrier spacing.
The valid range is -128 … 127 if the guard interval is 1/128.
The valid range is -256 … 255 if the guard interval is 1/64.

If the data slice is not empty then for type 1 data slices no change is accepted and for type 2
must hold that m_OffsetLeft< m_OffsetRight. It is up to the user to ensure that there is
sufficient bandwidth and no bitrate overflow.
m_Plps
A vector specifying the DVB-C2 parameters updates for the physical layer pipes. Note that the
number of physical layer pipes and the order of physical layer pipes must be the same as in the
global configuration.

25
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2L1UpdatePlpPars
Structure describing DVB-C2 parameter updates for one physical layer pipe. This structure is used in
class DtDvbC2L1UpdateDSlicePars.

struct DtDvbC2L1UpdatePlpPars
{
bool m_Enable; // Enable the PLP (yes/no)
};

Members
m_Enable
If true, the physical layer pipe is enabled, otherwise it is disabled. Only enabled physical layer
pipes will occur in the L1 signalling.
Note that only physical layer pipes where m_NoData==true can be disabled.

26
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2L1UpdatePars
Structure describing the updated DVB-C2 L1 signalling part2 parameters. This structure is used in
class DtDvbC2Pars.

struct DtDvbC2L1UpdatePars
{
int m_NumFrames; // Number of C2 frames the update is used
// L1 data slice updates
std::vector<DtDvbC2L1UpdateDSlicePars> m_DSlices;
};

Members
m_NumFrames
Number of C2 frames the updated data slice parameters are used.
m_DSlices
A vector specifying for each data slice the updated data slice parameters.
Note that the number of data slices and the order of data slices must be the same as in
DtDvbC2Pars.

27
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2ModStatus
Structure containing the status of the DVB-C2 modulator. This structure is an output parameter of
DtMplpOutpChannel::GetMplpModStatus.

struct DtDvbC2ModStatus
{
int m_MplpModFlags; // Multi-PLP-modulator flags
__int64 m_DjbOverflows; // Number of DJB overflows
__int64 m_DjbUnderflows; // Number of DJB underflows
};

Members
m_MplpModFlags
Multi-PLP-modulator flags. If the modulator stalls m_MplpModFlags is set to a nonzero value.
m_DjbOverflows
Total number De-Jitter Buffer overflows.
If such overflow occurs, the DtDvbC2PlpPars::m_IssyOutputDelay parameter must be de-
creased or DtDvbC2PlpPars::m_IssyBufs must be increased.
m_DjbUnderflows
Total number De-Jitter Buffer underflows.
If such underflow occurs, the DtDvbC2PlpPars::m_IssyOutputDelay parameter must be
increased.

28
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2NotchPars
Structure specifying a DVB-C2 notch band. This structure is used in class DtDvbC2Pars, in an array of
DTAPI_DVBC2_NUM_NOTCH_MAX structs.

struct DtDvbC2NotchPars
{
int m_Start; // Notch start
int m_Width; // Notch width
};

Members
m_Start
Start position of the notch band relative to the start frequency of the C2-System. The start position
is indicated in multiples of pilot carrier spacing.
The valid range is 0 … 8191 if the guard interval is 1/128.
The valid range is 0 … 16383 if the guard interval is 1/64.
m_Width
Width of the notch band indicated in multiples of pilot carrier spacing.
The valid range is 0 … 255 if the guard interval is 1/128.
The valid range is 0 … 511 if the guard interval is 1/64.

29
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2PaprPars
Structure for specifying PAPR reduction parameters. This structure is used in class DtDvbC2Pars.

struct DtDvbC2PaprPars
{
bool m_TrEnabled; // PAPR TR enabled
double m_TrVclip; // Clipping threshold
int m_TrMaxIter; // Maximum number of iterations
};

Members
m_TrEnabled
If true, PAPR TR is active, otherwise PAPR TR is not active.
m_TrVclip
PAPR TR clipping threshold. The valid range is 1 … 4.32 (Volt).
m_TrMaxIter
Maximum number of iterations. Must be greater than or equal to 1.
Note: PAPR TR processing time is proportional to this parameter.

30
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2ParamInfo
Structure containing the DVB-C2 “derived” parameters: the value of the members follows from the
basic DVB-C2 modulation parameters.
This structure is an output parameter of DtDvbC2Pars::GetParamInfo.

struct DtDvbC2ParamInfo
{
int m_L1Part2Length; // Number of bits of the L1 part2 data
int m_NumL1Symbols; // Total number of symbols per frame
int m_NumSymbols; // Number of L1 symbols
int m_PilotSpacing; // Distance between pilots
int m_FftSize; // FFT size
int m_MinCarrierOffset; // Lowest used carrier offset
int m_CenterFrequency; // Center frequency
};

Members
m_L1Part2Length
Number of bits of the L1 part 2 data (including CRC).
m_NumL1Symbols
Number of L1 symbols ( LP ).
m_NumSymbols
Total number of symbols per frame ( LP + Ldata ).
m_PilotSpacing
The number of carriers between pilots ( DX ).
m_FftSize
FFT size.
m_MinCarrierOffset
The lowest used carrier offset.
m_CenterFrequency
Center frequency, expressed as the distance from 0 Hz in multiples of the carrier spacing.

31
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2PlpPars
Structure specifying the DVB-C2 modulation parameters for one physical layer pipe. This structure is
used in class DtDvbC2DSlicePars.

struct DtDvbC2PlpPars
{
// Mode adaptation layer: TS input
int m_Ccm; // ACM/CCM bit in the BBFrame header 0 or 1
bool m_Hem; // High Efficiency Mode (yes/no)
bool m_Npd; // Null Packet Deletetion (yes/no)
int m_Issy; // ISSY mode
int m_IssyBufs; // ISSY BUFS
int m_IssyOutputDelay; // ISSY output delay in T units
int m_TsRate; // Transport stream rate

// Mode adaptation layer: GSE input


int m_GseLabelType; // GSE-label type
// Modulation parameters
int m_Id; // PLP ID
int m_Type; // PLP type
bool m_Bundled; // PLP bundled (yes/no)
int m_GroupId; // PLP group ID
int m_FecType; // FEC type
int m_CodeRate; // Code rate
int m_Modulation; // Modulation type
int m_HdrCntr; // Header counter
std::vector<DtDvbC2XFecFrameHeader> m_AcmHeaders; // ACM headers
bool m_PsiSiReproc; // PSI/SI reprocessing is performed (yes/no)
int m_TsId; // Transport stream ID
int m_OnwId; // Original network ID
bool m_NoData; // No input data is provided for this PLP
};

Members
m_Ccm
ACM/CCM-field (Adaptive Coding and Modulation or Constant Coding and Modulation) in the
BBFrame header 0 or 1.
m_Hem
If true, the PLP uses High Efficiency Mode (HEM), otherwise Normal Mode (NM) is used.
m_Npd
If true, null-packet deletion is active, otherwise it is not active.

32
DTAPI – Multi-PLP Extensions
Reference Manual

m_Issy
ISSY mode, according to the table below.
Value Meaning
DTAPI_DVBC2_ISSY_NONE No ISSY field is used
DTAPI_DVBC2_ISSY_SHORT 2 byte ISSY field is used
DTAPI_DVBC2_ISSY_LONG 3 byte ISSY field is used

m_IssyBufs
ISSY ‘BUFS’ value. The valid range is 0 … 2097151
m_IssyOutputDelay
Delay (in T units) between the incoming data and the output data in the receiver model. This
value determines the minimum and maximum dejitter buffer usage and is used to compute the
ISSY ‘BUFSTAT’ field.
m_TsRate
Transport-Stream rate in bps. If m_TsRate is set to ‘0’, no ISSY is used and null-packet deletion
is not active then the transport stream rate is computed from the PLP parameters.
m_GseLabelType
GSE-label type.
Value Meaning
DTAPI_DVBC2_GSE_LABEL_3BYTE 3-byte GSE label
DTAPI_DVBC2_GSE_LABEL_6BYTE 6-byte GSE label
DTAPI_DVBC2_GSE_LABEL_NONE No GSE label

m_Id
Unique identification of the PLP within a C2-System. The valid range is 0 … 255.
m_Bundled
If true, the associated PLP is bundled with other PLP(s) within the current C2 System. All the
bundled PLPs have the same PLP ID. An input stream is created only for the first PLP of the
bundle.
m_Type
PLP type.
Value Meaning
DTAPI_DVBC2_PLP_TYPE_COMMON Common PLP
DTAPI_DVBC2_PLP_TYPE_GROUPED Grouped data PLP

DTAPI_DVBC2_PLP_TYPE_NORMAL Normal data PLP

m_GroupId
Identifies the PLP group with which the PLP is associated. The valid range is 0 … 255.

33
DTAPI – Multi-PLP Extensions
Reference Manual

m_FecType
FEC type used by the PLP.
Value Meaning

DTAPI_DVBC2_LDPC_16K 16K LDPC


DTAPI_DVBC2_LDPC_64K 64K LDPC

m_CodeRate
Convolutional coding rate used by the PLP.
Value Meaning
DTAPI_DVBC2_COD_2_3 2/3
DTAPI_DVBC2_COD_3_4 3/4
DTAPI_DVBC2_COD_4_5 4/5
DTAPI_DVBC2_COD_5_6 5/6
DTAPI_DVBC2_COD_8_9 8/9 (for 16K FEC)
DTAPI_DVBC2_COD_9_10 9/10 (for 64K FEC)

m_Modulation
Modulation used by the PLP.
Value Meaning
DTAPI_DVBC2_QAM16 16-QAM
DTAPI_DVBC2_QAM64 64-QAM
DTAPI_DVBC2_QAM256 256-QAM
DTAPI_DVBC2_QAM1024 1024-QAM
DTAPI_DVBC2_QAM4096 4096-QAM
DTAPI_DVBC2_QAM16384 16384-QAM
DTAPI_DVBC2_QAM65536 65536-QAM

m_HdrCtr
Header counter field, number of FECFrames following the FECFrame header: 0=1 FECFrame;
1=2 FECFrames.
m_AcmHeaders
A vector that holds the XFEC Frame modulation parameters for Adaptive Coding and Modula-
tion (ACM) testing. If the number of ACM headers is greater than zero, then the successive XFEC
frames of this PLP use the modulation and coding parameters from the m_AcmHeaders vector.
After the last value is used, it loops again to the start of the vector. In this case the m_FecType,
m_Modulation, m_CodeRate and m_HdrCntr parameters from the DtDvbC2PlpPars
structure are ignored.
m_PsiSiReproc
If true, indicates that PSI/SI has been reprocessed.

34
DTAPI – Multi-PLP Extensions
Reference Manual

m_TsId, m_OnwId
If m_PsiSiReproc is set to ‘false’, these members specify the Transport Stream ID and Original
Network ID of the TS in the PLP. A receiver will use these fields if it can’t rely on the PSI/SI.
m_NoData
If true, no input data is provided for this PLP. It is implicitly true for all PLPs in a data slice where
m_OffsetLeft == m_OffsetRight.

35
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbC2XFecFrameHeader
Structure describing the coding and modulation parameters for a series of XFEC frames for Adaptive
Coding and Modulation (ACM) tests. This structure is used in class DtDvbC2PlpPars.

struct DtDvbC2XFecFrameHeader
{
int m_FecType; // PLP FEC type
int m_Modulation; // PLP modulation
int m_CodeRate; // PLP code rate
int m_HdrCntr; // Header counter
int m_XFecFrameCount; // Number XFEC frames using these parameters
};

Members
m_FecType
PLP FEC type. See DtDvbC2PlpPars for a list of applicable values.
m_Modulation
PLP modulation. See DtDvbC2PlpPars for a list of applicable values.
m_CodeRate
PLP code rate. See DtDvbC2PlpPars for a list of applicable values.
m_HdrCntr
PLP header counter. See DtDvbC2PlpPars for a list of applicable values.
m_XFecFrameCount
Number of XFEC frames using the parameters. The valid range is 1 … 256.

36
DTAPI – Multi-PLP Extensions
Reference Manual

DVB-T2 Data Structures

Struct DtDvbT2AuxPars
Structure for specifying AUX stream parameters, which can be inserted for test purposes. This structure
is used in class DtDvbT2ComponentPars.

struct DtDvbT2AuxPars
{
int m_NumDummyStreams; // Number of dummy AUX streams
};

Members
m_NumDummyStreams
Number of dummy AUX streams added for test purposes.
If TX signature through AUX streams is enabled, the valid range is 0 ...14; otherwise, the valid
range is 0 …15.

37
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2MiPars
Structure for enabling T2-MI generation, and for specifying its parameters. This structure is used in
class DtDvbT2Pars.

Struct DtDvbT2MiPars
{
bool m_Enabled; // Enable T2-MI output
int m_Pid; // (First) T2-MI data PID
int m_StreamId; // Stream-id for the (first) T2-MI stream
int m_Pid2; // Second T2-MI data PID
int m_StreamId2; // Stream-id for the second T2-MI stream
int m_PcrPid; // T2-MI PCR PID
int m_PmtPid; // T2-MI PMT PID
int m_TsRate; // T2-MI Transport-Stream rate
int m_TimeStamping; // T2-MI timestamping
__int64 m_SecSince2000; // First T2-MI output timestamp value
int m_Subseconds; // Number of subseconds
int m_T2miUtco; // Offset in seconds between UTC and Y2000
bool m_EncodeFef; // Encode FEF (yes/no)
};

Members
m_Enabled
If true, T2-MI generation is enabled. An MPEG-2 Transport Stream is generated containing
Transport Packets that encapsulate the T2-MI packets.
m_Pid
PID carrying the T2-MI packet data. The valid range is 0 … 8190.
m_StreamId
Stream-id for the generated T2-MI stream. The valid range is 0 … 7.
m_Pid2
A second PID carrying the T2-MI packet data, used in case of multi-profile stream generation.
The valid range is 0 … 8190.
m_StreamId2
Stream-id for the second generated T2-MI stream, used in case of multi-profile stream genera-
tion. The valid range is 0 … 7.
m_PcrPid
PID carrying PCR values. If m_PcrPid equals -1, no PCRs are inserted in the Transport Stream;
otherwise a PCR is inserted on the indicated PID once per 40ms. The valid range is -1 … 8190.
m_PmtPid
PID carrying the PMT-table. If m_PmtPid equals -1, no PAT and no PMT-table are inserted in
the Transport Stream; otherwise, PAT and PMT are inserted on PID 0 once per 100ms. The valid
range is -1 … 8190.
m_TsRate
T2-MI Transport-Stream rate in bits per second.
m_TimeStamping
Type of DVB-T2 timestamps to insert.

38
DTAPI – Multi-PLP Extensions
Reference Manual

Value Meaning
DTAPI_DVBT2MI_TIMESTAMP_NULL Null timestamp
DTAPI_DVBT2MI_TIMESTAMP_REL Relative timestamps. Use m_Subseconds.
DTAPI_DVBT2MI_TIMESTAMP_ABS Absolute timestamps. Use m_SecSince2000,
m_Subseconds and m_T2MiUtco.

m_SecSince2000
Number of seconds since 2000-01-01 00:00:00 UTC. This value is inserted in the first DVB-T2
timestamp that is generated. Subsequent timestamps are computed.
This field is used if m_TimeStamping equals DTAPI_DVBT2MI_TIMESTAMP_ABS.
m_Subseconds
Number of subsecond units (Tsub) elapsed since the time expressed in the seconds field. This
value is inserted in the first generated DVB-T2 timestamp. Subsequent timestamps are com-
puted.
This field is used if m_TimeStamping is either DTAPI_DVBT2MI_TIMESTAMP_REL or
TAPI_DVBT2MI_TIMESTAMP_ABS.
The T2 system bandwidth defines the units of the subseconds as shown in the table below.
Bandwidth Subseconds units, Tsub
1.7 MHz 1/131 µs
5 MHz 1/40 µs
6 MHz 1/48 µs
7 MHz 1/56 µs
8 MHz 1/64 µs
10 MHz 1/80 µs

m_T2MiUtco
Offset in seconds between UTC and m_SecSince2000. As of February 2009 the value shall be
2 and shall change as a result of each new leap second. This field is used if m_TimeStamping
equals DTAPI_DVBT2MI_TIMESTAMP_ABS.
m_EncodeFef
If true, generates a FEF part composite packet with the required subpart. Otherwise, only gen-
erates a FEF part NULL packet when FEF is enabled.

39
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2ModStatus
Structure containing the status of the DVB-T2 modulator. This structure is an output parameter of
DtMplpOutpChannel::GetMplpModStatus.

struct DtDvbT2ModStatus
{
int m_MplpModFlags; // Multi-PLP-modulator flags
__int64 m_PlpNumBlocksOverflows; // Number of PLP block overflows
__int64 m_BitrateOverflows; // Number of bitrate overflows
__int64 m_TtoErrorCount; // Number of invalid TTOs
// T2MI specific
__int64 m_T2MiOutputRateOverflows; // Number of T2MI rate overflows
int m_T2MiOutputRate; // Current effective T2MI rate
};

Members
m_MplpModFlags
Multi-PLP-modulator flags. If the modulator stalls m_MplpModFlags is set to a nonzero value.
m_PlpNumBlocksOverflows
Total number of FEC frames for which the requested number of PLP blocks is greater than
DtDvbT2PlpPars::m_NumBlocks. An overflow results in an invalid stream.
m_BitrateOverflows
Total number FEC frames for which too many bits were allocated. An overflow results in an
invalid stream.
m_TtoErrorCount
Number of times the generated TTO value was invalid. Typically this occurs if
DtDvbT2PlpPars::m_IssyTDesign is too small.
m_T2MiOutputRateOverflows
Number of T2-MI bitrate overflows. The DtDvbT2MiPars::m_TsRate must be increased for
reliable operation.
m_T2MiOutputRate
Current T2-MI rate excluding null packets in bps.

40
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2PaprPars
Structure for specifying the PAPR reduction parameters. This structure is used in class
DtDvbT2ComponentPars.

struct DtDvbT2PaprPars
{
bool m_AceEnabled; // PAPR ACE enabled
double m_AceVclip; // ACE clipping threshold
double m_AceGain; // ACE gain
double m_AceLimit; // ACE limit
int m_AceInterpFactor; // ACE interplation factor
int m_AcePlpIndex; // PLP used for PAPR ACE
bool m_TrEnabled; // PAPR TR enabled
bool m_TrP2Only // PAPR TR is only applied on the P2 symbol
double m_TrVclip; // TR clipping threshold
int m_TrMaxIter; // TR maximum number of iterations
int m_L1ExtLength; // L1 extension field length
bool m_L1AceEnabled; // L1 ACE enabled
double m_L1AceCMax; // L1 ACE max constellation extension value
bool m_L1Scrambling; // L1 Post Scrambling (for V1.3.1 only)
// Parameters only applicable for DVB-T2 V1.2.1
int m_NumBiasBalCells; // Number cells added to reduce P2 PAPR
int m_BiasBalancing; // L1 bias compensation
};

Members
m_AceEnabled
If true, PAPR ACE is active, otherwise PAPR ACE is not active.
m_AceVclip
PAPR ACE clipping threshold. The valid range is 1 … 4.32 (Volt).
m_AceGain
PAPR ACE gain. The valid range is 0 … 31 (steps of 1).
m_AceLimit
PAPR ACE limit. The valid range is 0.7 … 1.4 (steps of 0.1).
m_AceInterpFactor
PAPR ACE interpolation factor. The valid range is 1 … 4.
Note: PAPR ACE processing time is proportional to this parameter.
m_AcePlpIndex
PLP used for the PAPR ACE.
m_TrEnabled
If true, PAPR TR is active, otherwise PAPR TR is not active.
m_TrP2Only
If true, PAPR TR is only applied on the P2 symbol, otherwise PAPR TR is applied on all symbols.
m_TrVclip
PAPR TR clipping threshold. The valid range is 1 … 4.32 (Volt).
m_TrMaxIter
Maximum number of iterations. Must be greater than or equal to 1.

41
DTAPI – Multi-PLP Extensions
Reference Manual

Note: PAPR TR processing time is proportional to this parameter.


m_L1ExtLength
L1 extension field length. The valid rang is 0 … 65535.
m_L1AceEnabled
If true, L1 ACE is active, otherwise L1 ACE is not active. Only applicable when DVB-T2 V1.3.1
is selected.
m_L1AceCMax
Maximum value added to extend the QAM constellation values of L1.
m_L1Scrambling
If true, L1-Post scrambling is active.
m_NumBiasBalCells
Number of dummy cells added to reduce the P2 PAPR.
The valid range is 0 … DtDvbT2ParamInfo::m_BiasBalCellsMax.
m_BiasBalancing
L1 bias balancing.
Value Meaning
DTAPI_DVBT2_BIAS_BAL_OFF No L1 bias compensation
DTAPI_DVBT2_BIAS_BAL_ON Modify the L1 reserved fields and L1 extension field padding
to compensate the L1 bias

42
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2ParamInfo
Structure containing the DVB-T2 “derived” parameters: the value of the members follows from the
basic DVB-T2 modulation parameters.
This structure is an output
parameter of DtDvbT2Pars::GetParamInfo and
DtDvbT2Pars::OptimisePlpNumBlocks.

struct DtDvbT2ParamInfo{
int m_TotalCellsPerFrame; // Total number of cells per frame
int m_L1CellsPerFrame; // #L1 cells per frame
int m_AuxCellsPerFrame; // #Aux stream cells per frame
int m_BiasBalCellsPerFrame; // #Bias balancing cells per frame
int m_BiasBalCellsMax; // Max #bias balancing cells
int m_DummyCellsPerFrame; // #Dummy cells per frame
int m_SamplesPerFrame; // #Samples per frame
};

Members
m_TotalCellsPerFrame
Total number of cells per frame.
m_L1CellsPerFrame
Total number of cells per frame used for L1 signalling.
m_AuxCellsPerFrame
Total number of auxiliary stream cells per frame.
m_BiasBalCellsPerFrame
Total number of L1 bias balancing cells per frame.
m_BiasBalCellsMax
Maximum number of L1 bias balancing cells per P2.
m_DummyCellsPerFrame
Total number of cells lost per frame; dummy cells overhead = m_DummyCellsPerFrame /
m_TotalCellsPerFrame. It is only computed for the first frame.
m_SamplesPerFrame
Total number of samples per frame.

43
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2PlpPars
Structure specifying the DVB-T2 modulation parameters for one PLP (Physical Layer Pipe). This structure
is used in class DtDvbT2ComponentPars, in an array of DTAPI_DVBT2_NUM_PLP_MAX structs for the
physical layer pipes.
struct DtDvbT2PlpPars
{
// Mode adaptation layer: TS input
bool m_Hem; // High Efficiency Mode (yes/no)
bool m_Npd; // Null Packet Deletetion (yes/no)
int m_Issy; // ISSY mode
int m_IssyBufs; // ISSY BUFS
int m_IssyTDesign; // ISSY T_design value
int m_CompensatingDelay; // Additional delay in samples
int m_TsRate; // Transport Stream rate
// Mode adaptation layer: GSE input
int m_GseLabelType; // GSE-label type
// L1 parameters
int m_Id; // PLP ID
int m_GroupId; // PLP group ID
int m_Type; // PLP type
int m_PayloadType; // PLP payload type
int m_CodeRate; // Code rate
int m_Modulation; // Modulation type
bool m_Rotation; // Constellation rotation (yes/no)
int m_FecType; // FEC type
int m_FrameInterval; // T2-frame interval
int m_FirstFrameIdx; // First frame index
int m_TimeIlLength; // Time interleaving length
int m_TimeIlType; // Timer interleaving type
bool m_InBandAFlag; // In-band A signalling information (yes/no)
bool m_InBandBFlag; // In-band B signalling information (yes/no)
bool m_NumBlocks; // Maximum number of FEC blocks per IL frame
int m_NumOtherPlpInBand; // Number of other PLPs in the in-band sign
int m_OtherPlpInBand[DTAPI_DVBT2_NUM_PLP_MAX-1];
// Array of IDs of the other in band PLPs
// Parmeters below are only meaningful for type 1 PLPs in TFS system.
bool m_FfFlag; // FF flag
int m_FirstRfIdx; // First TFS RF channel where PLP occurs
};

Members
m_Hem
If true, the PLP uses High Efficiency Mode (HEM); otherwise, Normal Mode (NM) is used.
m_Npd
If true, null-packet deletion is active.

44
DTAPI – Multi-PLP Extensions
Reference Manual

m_Issy
ISSY mode.
Value Meaning
DTAPI_DVBT2_ISSY_NONE No ISSY field is used
DTAPI_DVBT2_ISSY_SHORT 2-byte ISSY field is used
DTAPI_DVBT2_ISSY_LONG 3-byte ISSY field is used

m_IssyBufs
ISSY ‘BUFS’ value. The valid range is 0 … 2097151
m_IssyTDesign
T_design value for TTO generation. Set to ‘0’ to have the modulator choose the value. T_design
is defined as the delay (in samples) between the start of the first T2 frame in which the PLP is
mapped and the first output bit of the Transport Stream.
m_CompensatingDelay
Additional delay (in samples) before the TS data is sent. Set to ‘-1’ to have the modulator choose
the value.
m_TsRate
Transport stream rate in bps. If m_TsRate is set to ‘0’ and no null-packet deletion is active then
the transport stream rate is computed from the PLP parameters.
m_GseLabelType
GSE-label type.
Value Meaning
DTAPI_DVBT2_GSE_LABEL_3BYTE 3-byte GSE label
DTAPI_DVBT2_GSE_LABEL_6BYTE 6-byte GSE label
DTAPI_DVBT2_GSE_LABEL_NONE No GSE label

m_Id
Unique identification of the PLP within a T2 system. The valid range is 0 … 255.
m_GroupId
Identifies the PLP group with which the PLP is associated. The valid range is 0 … 255.
m_Type
PLP type.
Value Meaning
DTAPI_DVBT2_PLP_TYPE_COMM Common PLP
DTAPI_DVBT2_PLP_TYPE_1 Data PLP type1
DTAPI_DVBT2_PLP_TYPE_2 Data PLP type2

45
DTAPI – Multi-PLP Extensions
Reference Manual

m_PayloadType
PLP payload type.
Value Meaning
DTAPI_DVBT2_PAYLOAD_GSE Generic Stream Encapsulation
DTAPI_DVBT2_PAYLOAD_TS Transport Stream

m_CodeRate
Convolutional coding rate used by the PLP.
Value Meaning
DTAPI_DVBT2_COD_1_2 1/2
DTAPI_DVBT2_COD_3_5 3/5
DTAPI_DVBT2_COD_2_3 2/3
DTAPI_DVBT2_COD_3_4 3/4
DTAPI_DVBT2_COD_4_5 4/5 (not for T2-Lite)
DTAPI_DVBT2_COD_5_6 5/6 (not for T2-Lite)
DTAPI_DVBT2_COD_1_3 1/3 (only for T2-Lite)
DTAPI_DVBT2_COD_2_5 2/5 (only for T2-Lite)

m_Modulation
Modulation used by the PLP.
Value Meaning
DTAPI_DVBT2_BPSK BPSK
DTAPI_DVBT2_QPSK QPSK
DTAPI_DVBT2_QAM16 16-QAM
DTAPI_DVBT2_QAM64 64-QAM
DTAPI_DVBT2_QAM256 256-QAM

m_Rotation
If true, constellation rotation is used.
m_FecType
FEC type used by the PLP.
Value Meaning

DTAPI_DVBT2_LDPC_16K 16K LDPC


DTAPI_DVBT2_LDPC_64K 64K LDPC

m_FrameInterval
The T2-frame interval within the super-frame for this PLP. The valid range is 1 ... 255.
m_FirstFrameIdx

46
DTAPI – Multi-PLP Extensions
Reference Manual

The index of the first frame of the super-frame in which this PLP occurs. The valid range is
0 ... m_FrameInterval-1.
m_TimeIlLength
Time interleaving length. The valid range is 0 … 255.
If m_TimeIlType is set to ‘0’ (DTAPI_DVBT2_IL_ONETOONE), this parameter specifies the num-
ber of TI-blocks per interleaving frame.
If m_TimeIlType is set to ‘1’ (DTAPI_DVBT2_IL_MULTI), this parameter specifies the number
of T2 frames to which each interleaving frame is mapped.
m_TimeIlType
Type of interleaving used by the PLP.
Value Meaning
DTAPI_DVBT2_IL_ONETOONE One interleaving frame corresponds to one T2 frame
DTAPI_DVBT2_IL_MULTI One interleaving frame is carried in multiple T2 frames

m_InBandAFlag
If true, the in-band A flag is set and in-band A signalling information is inserted in this PLP.
m_InBandBFlag
If true, the in-band B flag is set and in-band B signalling information is inserted in this PLP.
m_NumBlocks
The maximum number of FEC blocks contained in one interleaving frame for this PLP. The valid
range is 0 ... 2047.
m_NumOtherPlpInBand
Specifies the number of other PLPs in the in-band signalling. The valid range is
0 … DTAPI_DVBT2_NUM_PLP_MAX-1.
m_OtherPlpInBand
Array specifying the IDs of the other PLPs in the in-band signalling.
m_FfFlag
If true, the PLP occurs on the same RF channel in each T2-frame; otherwise, inter-frame TFS is
applied. This parameter is only meaningful for a type 1 PLP in a TFS system.
m_FirstRfIdx
The RF channel where this PLP occurs on in the first frame of a super-frame in a TFS system. If,
m_FfFlag is set to ‘true’ the field indicates the RF channel the PLP occurs on in every T2-frame.
This parameter is only meaningful for a type 1 PLP in TFS system.

47
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2RbmEvent
Structure containing the Receiver Buffer Model (RBM) event data. If RBM-validation is enabled then on
an RBM-event the DtDvbT2RbmEvent parameters are sampled and passed to the RBM-event handler.

struct DtDvbT2RbmEvent
{
int m_DataPlpId; // Data PLP ID
int m_DataPlpIndex; // Data PLP index
double m_Time; // Time in T units
int m_IsCommonPlp; // Common PLP
DtDvbT2RbmEvent m_EventType; // RBM event type
union {
struct {
// DTAPI_DVBT2_RBM_EVENT_PLOT parameters
int m_TdiWriteIndex; // TDI write index
int m_TdiReadIndex; // TDI read index
int m_TdiReadAvailable; // Available cells in TDI buffer
int m_DjbSize; // Dejitter buffer size in bits
} Plot;
struct {
// DTAPI_DVBT2_RBM_EVENT_BUFS_TOO_SMALL parameters
int m_Bufs; // BUFS value
} BufsTooSmall;
struct {
// DTAPI_DVBT2_RBM_EVENT_TTO_IN_THE_PAST parameters
int m_Tto; // TTO value
} TtoInThePast;
struct {
// DTAPI_DVBT2_RBM_EVENT_DJB_OVERFLOW parameters
int m_DjbSize; // Dejitter buffer size in bits
int m_DjbMaxSize;
} DjbOverflow;
struct {
// DTAPI_DVBT2_RBM_EVENT_CRC8_ERROR_HEADER parameters
int m_Val; // CRC8 value
} Crc8ErrorHeader;
struct {
// DTAPI_DVBT2_RBM_EVENT_DFL_TOO_LARGE parameters
int m_SyncD; // SYNCD
int m_Dfl; // DFL
} SyncDTooLarge;
struct {
// DTAPI_DVBT2_RBM_EVENT_INVALID_SYNCD parameters
int m_SyncD; // SYNCD
int m_Left; // #bytes left
} InvalidSyncD;
struct {
// DTAPI_DVBT2_RBM_EVENT_TDI_OVERFLOW parameters
int m_TdiWriteIndex; // TDI write index
int m_TdiReadIndex; // TDI read index
} TdiOverflow;
struct {
// DTAPI_DVBT2_RBM_EVENT_INVALID_PLP_START parameters
int m_PlpId1; // IDs of overlapping PLPs
int m_PlpId2;

48
DTAPI – Multi-PLP Extensions
Reference Manual

} InvalidPlpStart;
struct {
// DTAPI_DVBT2_RBM_EVENT_ISCR_ERROR parameters
int m_Delta; // Delta time in T units
} IscrError;
struct {
// DTAPI_DVBT2_RBM_EVENT_BUFS_NOT_CONSTANT parameters
int m_CufBufs; // Current and new BUFS values
int m_NewBufs;
} BufsNotConstant;
struct {
// DTAPI_DVBT2_RBM_EVENT_PLP_NUM_BLOCKS_TOO_SMALL parameters
int m_PlpNumBlocks; // Number of blocks
} PlpNumBlocksTooSmall;
} u;
};

Members
m_DataPlpId
Data PLP ID identifying the stream.
m_DataPlpIndex
Data PLP index.
m_Time
Time in T units.
m_IsCommonPlp
Indicates whether the event refers to a common PLP.
Possible values:
-1 : Event doesn’t refer to a specific PLP
0 : Data PLP
1 : Common PLP
m_EventType
Type of Receiver Buffer Model event
Value Meaning
DTAPI_DVBT2_RBM_EVENT_PLOT Plot event
DTAPI_DVBT2_RBM_EVENT_DJB_UNDERFLOW De-jitter buffer underflow
DTAPI_DVBT2_RBM_EVENT_BUFS_TOO_SMALL BUFS gives too small dejitter buffer
DTAPI_DVBT2_RBM_EVENT_TTO_IN_THE_PAST TTO gives time in the past
DTAPI_DVBT2_RBM_EVENT_DJB_OVERFLOW De-jitter buffer overflow
DTAPI_DVBT2_RBM_EVENT_CRC8_ERROR_HEADER CRC8 error in BBFrame
DTAPI_DVBT2_RBM_EVENT_DFL_TOO_LARGE DFL too large in BBFrame
DTAPI_DVBT2_RBM_EVENT_SYNCD_TOO_LARGE SYNCD too large in BBFrame
DTAPI_DVBT2_RBM_EVENT_INVALID_UPL Invalid UPL in BBFrame
DTAPI_DVBT2_RBM_EVENT_INVALID_SYNCD Invalid SYNCD in BBFrame

49
DTAPI – Multi-PLP Extensions
Reference Manual

DTAPI_DVBT2_RBM_EVENT_TDI_OVERFLOW TDI overflow


DTAPI_DVBT2_RBM_EVENT_TOO_MANY_TI_BLOCKS Too many TI blocks queued

DTAPI_DVBT2_RBM_EVENT_INVALID_PLP_START PLP-start values gives overlap


DTAPI_DVBT2_RBM_EVENT_FDI_OVERFLOW Frequency/L1 de-interleaver overflow
DTAPI_DVBT2_RBM_EVENT_NO_TS_RATE Not enough ISCR data to estimate TS rate
DTAPI_DVBT2_RBM_EVENT_ISCR_ERROR ISCR error
DTAPI_DVBT2_RBM_EVENT_BUFS_NOT_CONSTANT BUFS not constant
DTAPI_DVBT2_RBM_EVENT_ISSYI_NOT_CONSTANT ISSYI not constant

DTAPI_DVBT2_RBM_EVENT_HEM_NOT_CONSTANT HEM not constant


DTAPI_DVBT2_RBM_EVENT_PLP_NUM_BLOCKS_TOO PLP numblocks for this interleaving frame
_SMALL is too small

u.Plot
Structure used for event type DTAPI_DVBT2_RBM_EVENT_PLOT.
u.Plot.m_TdiWriteIndex
Write index in time de-interleaver buffer.
u.Plot.m_TdiReadIndex
Read index in time de-interleaver buffer.
u.Plot.m_TdiReadAvailable
Number of available cells in the time de-interleaver read buffer.
u.Plot.m_DjbSize
De-jitter buffer size in number of bits.
u.BufsTooSmall
Structure used for event type DTAPI_DVBT2_RBM_EVENT_BUFS_TOO_SMALL.
u.BufsTooSmall.m_Bufs
BUFS value.
u.TtoInThePast
Structure used for event type DTAPI_DVBT2_RBM_EVENT_TTO_IN_THE_PAST.
u.TtoInThePast.m_Tto
TTO value from the ISSY-field
u.DjbOverflow
Structure used for event type DTAPI_DVBT2_RBM_EVENT_DJB_OVERFLOW.
u.DjbOverflow.m_DjbSize
De-jitter buffer size in bits.
u.DjbOverflow.m_DjbMaxSize
Maximum de-jitter buffer size in bits.
u.Crc8ErrorHeader
Structure used for event type DTAPI_DVBT2_RBM_EVENT_CRC8_ERROR_HEADER.

50
DTAPI – Multi-PLP Extensions
Reference Manual

u.Crc8ErrorHeader.m_Val
CRC-8 value from the baseband header.
u.SyncDTooLarge
Structure used for event type DTAPI_DVBT2_RBM_EVENT_DFL_TOO_LARGE.
u.SyncDTooLarge.m_SyncD
SYNCD value from the baseband header.
u.SyncDTooLarge.m_Dfl
DFL value from the baseband header.
u.InvalidSyncD
Structure used for event type DTAPI_DVBT2_RBM_EVENT_INVALID_SYNCD.
u.InvalidSyncD.m_SyncD
SYNCD value from the baseband header.
u.InvalidSyncD.m_Left
Number of bits remaining from the last baseband frame.
u.TdiOverflow
Structure used for event type DTAPI_DVBT2_RBM_EVENT_TDI_OVERFLOW.
u.TdiOverflow.m_TdiWriteIndex
Write index in time de-interleaver buffer.
u.TdiOverflow.m_TdiReadIndex
Read index in time de-interleaver buffer.
u.InvalidPlpStart
Structure used for event type DTAPI_DVBT2_RBM_EVENT_TDI_OVERFLOW.
u.InvalidPlpStart.m_Plp1, u.InvalidPlpStart.m_Plp2
IDs of the overlapping PLPs.
u.IscrError
Structure used for event type DTAPI_DVBT2_RBM_EVENT_ISCR_ERROR.
u.IscrError.m_Delta
Delta time in T-units.
u.BufsNotConstant
Structure used for event type DTAPI_DVBT2_RBM_EVENT_TDI_OVERFLOW.
u.BufsNotConstant.m_CurBufs, u.BufsNotConstant.m_NewBufs
Current and new BUFS values
u.PlpNumBlocksTooSmall
Structure used for event type DTAPI_DVBT2_RBM_EVENT_PLP_NUM_BLOCKS_TOO_SMALL.
u.PlpNumBlocksTooSmall.m_PlpNumBlocks
NUM_BLOCKS value for this PLP.

51
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2RbmValidation
Structure for enabling Receiver Buffer Model (RBM) validation, and specifying its parameters. This
structure is used in class DtDvbT2ComponentPars.

Struct DtDvbT2RbmValidation
{
bool m_Enabled; // Enable RBM validation
bool m_PlotEnabled; // Enable RBM plotting events
int m_PlotPeriod; // Plot period in T-units
void* m_pCallbackOpaque; // Opaque pointer for the callback function
void (*m_pCallbackFunc)( void*, const DtDvbT2RbmEvent*);
// Pointer to the callback function
};

Members
m_Enabled
If true, Receiver Buffer Model (RBM) validation is enabled. When a RBM-violation occurs, the
callback function (*m_pCallbackFunc) is called and an RBM-event is passed.
Note that RBM-validation consumes a substantial amount of CPU cycles and therefore cannot
always be performed in real time.
m_PlotEnabled
If true, Receiver Buffer Model (RBM) plotting is enabled. Periodically, the callback function will
be called passing a DTAPI_DVBT2_RBM_EVENT_PLOT event.
m_PlotPeriod
Plot period time in T-units.
m_pCallbackOpaque
Opaque pointer that is passed to the callback function.
m_pCallbackFunc
Pointer to the callback function that handles the RBM-events.

52
DTAPI – Multi-PLP Extensions
Reference Manual

Struct DtDvbT2TxSigPars
Structure for enabling and specifying the DVB-T2 transmitter signature. This structure is used in class
DtDvbT2ComponentPars.

Struct DtDvbT2TxSigPars
{
bool m_TxSigAuxEnabled; // Enable TX signature through AUX streams
int m_TxSigAuxId; // Transmitter ID
int m_TxSigAuxP; // P-value
int m_TxSigAuxQ; // Q-value
int m_TxSigAuxR; // R-value
bool m_TxSigFefEnabled; // Enable TX signature through FEF
int m_TxSigFefId1; // Transmitter ID for 1st period
int m_TxSigFefId2; // Transmitter ID for 2nd period
};

Members
m_TxSigAuxEnabled
If true, transmitter signature transmission through AUX streams is enabled.
m_TxSigAuxId
Transmitter ID. The valid range is 0 … 3071.
m_TxSigAuxP
The total number of possible transmitter IDs (M) is derived from m_TxSigAuxP (P).
M = 3 * (P+1). The valid range for m_TxSigAuxP is 0 … 1023.
m_TxSigAuxQ
The number of cells used per transmitter (N) is derived from m_TxSigAuxQ (Q).
N = 2^Q. The valid range for m_TxSigAuxQ is 0 … 15.
m_TxSigAuxR
The number of T2-frames used per transmitter signature (L) is derived from m_TxSigAuxR (R).
L = R+1. The valid range for m_TxSigAuxR is 0 … 255.
m_TxSigFefEnabled
If true, transmitter signature transmission through FEF is enabled. To use this, FEF generation
must be enabled and the FEF length must be greater than or equal to
DTAPI_TXSIG_FEF_LEN_MIN.

m_TxSigFefId1
Transmitter ID for the first signature period. The valid range is 0 … 7.
m_TxSigFefId2
Transmitter ID for the second signature period. The valid range is 0 … 7.

53
DTAPI – Multi-PLP Extensions
Reference Manual

DtAtsc3Pars

Class DtAtsc3Pars
Class specifying parameters for ATSC 3.0 modulation.

class DtAtsc3Pars
{
// System parameters
int m_Bandwidth; // System bandwidth
// Bootstrap parameters
int m_MinorVersion; // Minor version
int m_EasWakeup; // Emergency alert system wake-up
// Preamble (L1-Basic and L1-Detail) parameters
int m_PreambleFftSize; // Preamble FFT size
int m_PreambleGuardInterval; // Preamble guard interval
int m_PreamblePilotDx; // Preamble pilot pattern Dx
int m_PreambleReducedCarriers; // Preamble carrier reduction
int m_L1BasicFecMode; // L1-Basic FEC-type mode
int m_L1DetailFecMode; // L1-Detail FEC-type mode
int m_L1DetailAddParity; // L1-Detail additional parity mode
int m_L1DetailVersion; // L1-Detail version
int m_L1BasicVersion; // L1-Basic version
int m_TxIdInjectLevelCode; // Tx-ID injection level
int m_TxId; // Tx-ID address
int m_TxIdInjectLevelCodeChan2; // Tx-ID inj. level 2nd MIMO channel
int m_TxIdChan2; // Tx-ID address of 2nd MIMO channel
int m_TimeInfoFlag; // Time information insertion
int m_TimeSeconds; // Initial seconds component
int m_TimeNanoseconds; // Initial nanoseconds component
int m_MimoPilot; // MIMO pilot encoding
bool m_LlsFlag; // Low level signaling present(yes/no)
int m_Papr; // PAPR reduction mode
// Frame parameters
int m_FrameLengthMode; // Frame length mode (time/symbol aligned)
int m_FrameLength; // Frame length in units of 5 milliseconds
// Channel bonding
int m_NumRf; // Number of RF-frequencies
int m_BondedBsId[DTAPI_ATSC3_NUM_RF_MAX]; // Bonded BS IDs
int m_BsId; // Broadcast Stream ID
// Subframe parameters
std::vector<DtAtsc3SubframePars> m_Subframes;
// Parameters specifying the source for each PLP
int m_NumPlpInputs; // Number of PLP input streams
DtPlpInpPars m_PlpInputs[DTAPI_ATSC3_NUM_PLP_MAX];
int m_MimoOutputMode; // MIMO output
SisoOutputMode m_SisoOutput; // MIMO SISO mixed frame output
// Miscellaneous: Virtual output, Test-point output
DtVirtualOutPars m_VirtOutput;
DtTestPointOutPars m_TpOutput;
};

54
DTAPI – Multi-PLP Extensions
Reference Manual

Public members
m_Bandwidth
System bandwidth.
Value Meaning
DTAPI_ATSC3_6MHZ 6 MHz
DTAPI_ATSC3_7MHZ 7 MHz
DTAPI_ATSC3_8MHZ 8 MHz

m_MinorVersion
Minor version. Minor version number signalled in the bootstrap. The valid range is 0 … 7.
m_EasWakeup
Emergency alert system wake-up information. The valid range is 0 … 3.
m_PreambleFftSize
The FFT-size used for the preamble symbols.
Value Meaning
DTAPI_ATSC3_FFT_8K 8K FFT
DTAPI_ATSC3_FFT_16K 16K FFT
DTAPI_ATSC3_FFT_32K 32K FFT

m_PreambleGuardInterval
The guard interval between the preamble symbols.
Value Meaning
DTAPI_ATSC3_GI_1_192 GI1_192
DTAPI_ATSC3_GI_2_384 GI2_384
DTAPI_ATSC3_GI_3_512 GI3_512
DTAPI_ATSC3_GI_4_768 GI4_768
DTAPI_ATSC3_GI_5_1024 GI5_1024
DTAPI_ATSC3_GI_6_1536 GI6_1536
DTAPI_ATSC3_GI_7_2048 GI7_2048
DTAPI_ATSC3_GI_8_2432 GI8_2432
DTAPI_ATSC3_GI_9_3072 GI9_3072
DTAPI_ATSC3_GI_10_3648 GI10_3648
DTAPI_ATSC3_GI_11_4096 GI11_4096
DTAPI_ATSC3_GI_12_4864 GI12_4864

55
DTAPI – Multi-PLP Extensions
Reference Manual

m_PreamblePilotDx
The DX value of the preamble pilot pattern.
Value Meaning
DTAPI_ATSC3_PP_DX_3 DX=3
DTAPI_ATSC3_PP_DX_4 DX=4
DTAPI_ATSC3_PP_DX_6 DX=6
DTAPI_ATSC3_PP_DX_8 DX=8
DTAPI_ATSC3_PP_DX_12 DX=12
DTAPI_ATSC3_PP_DX_16 DX=16
DTAPI_ATSC3_PP_DX_24 DX=24
DTAPI_ATSC3_PP_DX_32 DX=32

m_PreambleReducedCarriers
Specifies the preamble carrier reduction. The valid range is 0 … 4.
m_L1BasicFecMode
The FEC-type mode used for L1-Basic. The valid range is 1 … 5.
m_L1DetailFecMode
The FEC-type mode used for L1-Detail. The valid range is 1 … 7.
m_L1DetailAddParity
L1-Detail aditional parity mode, specifying the ratio (K) of the number of additional parity bits.
The valid range is 0 … 2.
m_L1DetailVersion
L1-Detail version. valid range is 0 … 2.
m_L1BasicVersion
L1-Basic version. valid range is 0 … 1.

56
DTAPI – Multi-PLP Extensions
Reference Manual

m_TxIdInjectLevelCode
Specifies the Tx-ID injection level. In case of MIMO this is the level of the first MIMO channel.
Value Meaning
DTAPI_ATSC3_TXID_INJ_OFF Tx-ID injection off
DTAPI_ATSC3_TXID_INJ_45DB Tx-ID injection 45dB below preamble
DTAPI_ATSC3_TXID_INJ_42DB Tx-ID injection 42dB below preamble
DTAPI_ATSC3_TXID_INJ_39DB Tx-ID injection 39dB below preamble
DTAPI_ATSC3_TXID_INJ_36DB Tx-ID injection 36dB below preamble
DTAPI_ATSC3_TXID_INJ_33DB Tx-ID injection 33dB below preamble
DTAPI_ATSC3_TXID_INJ_30DB Tx-ID injection 30dB below preamble
DTAPI_ATSC3_TXID_INJ_27DB Tx-ID injection 27dB below preamble
DTAPI_ATSC3_TXID_INJ_24DB Tx-ID injection 24dB below preamble
DTAPI_ATSC3_TXID_INJ_21DB Tx-ID injection 21dB below preamble
DTAPI_ATSC3_TXID_INJ_18DB Tx-ID injection 18dB below preamble
DTAPI_ATSC3_TXID_INJ_15DB Tx-ID injection 15dB below preamble
DTAPI_ATSC3_TXID_INJ_12DB Tx-ID injection 12dB below preamble
DTAPI_ATSC3_TXID_INJ_9DB Tx-ID injection 9dB below preamble

m_TxIdAddress
Tx-ID address; valid range is 0 … 8191. In case of MIMO this is the Tx-ID of the first MIMO
channel.
m_TxIdInjectLevelCodeChan2
Specifies the Tx-ID injection level of the second MIMO channel. For possible values refer to
m_TxIdInjectLevelCode.
m_TxIdAddressChan2
Tx-ID address Tx-ID of the second MIMO channel; valid range is 0 … 8191.
m_TimeInfoFlag
Specifies the generation of the timing information and the precision. If time information is gen-
erated, m_TimeSecond and m_TimeNanoeconds specify the initial time.
Value Meaning
DTAPI_ATSC3_TIME_NONE No time information is generated
DTAPI_ATSC3_TIME_MS Time information in millisecond precision is generated
DTAPI_ATSC3_TIME_US Time information in microsecond precision is generated
DTAPI_ATSC3_TIME_NS Time information in nanosecond precision is generated

m_TimeSeconds
Initial seconds component of the time. It specifies the number of seconds elapsed since the PTP
epoch on 1st January 1970.

57
DTAPI – Multi-PLP Extensions
Reference Manual

m_TimeNanoseconds
Initial nanoseconds component of the time.
m_MimoPilot
Specifies the MIMO pilot encoding.
Value Meaning
DTAPI_ATSC3_MIMO_PE_WH_OR Walsh-Hadamard pilots or no MIMO
_NO_MIMO

DTAPI_ATSC3_MIMO_PE_NULL_ Null pilots


PILOT

m_LlsFlag
If true, indicates one or more PLPs carry low level signalling information.
m_Papr
The peak to average power reduction method. This is used to fill PAPR field in the L1-signaling.
Value Meaning
DTAPI_ATSC3_PAPR_NONE None
DTAPI_ATSC3_PAPR_ACE ACE - Active Constellation Extension
DTAPI_ATSC3_PAPR_TR TR - Power reduction with reserved carriers
DTAPI_ATSC3_PAPR_ACE_TR ACE and TR

m_FrameLengthMode
Specifies the frame length alignment mode.
Value Meaning
DTAPI_ATSC3_ALIGN_TIME Time-aligned frames
DTAPI_ATSC3_ALIGN_SYMBOL Symbol-aligned frames

m_FrameLength
Must be 0 if symbol-aligned frames are configured. Otherwise, it specifies the length of a frame
in units of 5 milliseconds. The valid values are 0 and 10 … 1000.
m_NumRf
Number of frequencies involved in channel bonding. The valid values are 0 …
DTAPI_ATSC3_NUM_RF_MAX.

m_BondedBsId
Array specifying the broadcast Stream IDs of the bonded channels.
m_BsId
Broadcast Stream ID or -1 if not valid.
m_Subframes
A vector specifying the ATSC 3.0 modulation parameters for the subframes.
The valid size is 1 … 64.
m_NumPlpInputs
Specifies the number of PLP inputs in the ATSC 3.0 system. The valid range is
1 … DTAPI_ATSC3_NUM_PLP_MAX.

58
DTAPI – Multi-PLP Extensions
Reference Manual

m_PlpInputs
Array specifying the PLP input streams. The index in the array is related to the index of a PLP in
the ATSC 3.0 system (i.e. the first DtPlpInpPars in the array is related to the first PLP in the
ATSC 3.0 system, which is the first PLP in the first subframe).
m_MimoOutputMode
Specifies the MIMO output mode.
Value Meaning
DTAPI_ATSC3_MIMO_OUT_NONE No MIMO output (single output)
DTAPI_ATSC3_MIMO_OUT_CHAN1 Output MIMO channel 1
DTAPI_ATSC3_MIMO_OUT_CHAN2 Output MIMO channel 2
DTAPI_ATSC3_MIMO_OUT_BOTH Output MIMO channel 1 and 2. Supported on DTA-2117
and when using virtual output (e.g. file).

m_SisoOutput
Specifies the output of SISO subframes in case of MIMO/SISO mixed frames.
Value Meaning
TO_BOTH SISO subframes are output to both channels
TO_FIRST SISO subframes are output to channel 1 only

m_VirtOutput
In case of a virtual output m_VirtOutput specifies the virtual output data parameters.
m_TpOutput
In case of a virtual output m_VirtOutput specifies the virtual output data parameters.

Remarks
The DtMplpOutpChannel::SetModControl() method sets the parameters for the ATSC 3.0 modu-
lator. The multi-PLP modulator can be used for both single-PLP and multi-PLP parameter sets. The
DtMplpOutpChannel::WriteMplpPacket method is used to write data to the output channel.

59
DTAPI – Multi-PLP Extensions
Reference Manual

DtAtsc3Pars::CheckValidity
Check ATSC 3.0 parameters for validity.

DTAPI_RESULT DtAtsc3Pars::CheckValidity();
DTAPI_RESULT DtAtsc3Pars::CheckValidity(
[out] int& SubframeIdx // Index of the subrame
[out] int& PlpIdx // Index of the PLP
);

Parameters
SubframeIdx
Output parameter that is set to the index of the subframe causing the error or is set to -1 if not
applicable.
PlpIdx
Output parameter that is set to the index of the PLP within the subframe causing the error or is
set to -1 if not applicable.

Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
DTAPI_E_INVALID_BANDWIDTH Invalid ATSC 3.0 bandwidth
DTAPI_E_INVALID_CODERATE Invalid PLP code rate
DTAPI_E_INVALID_CONSTEL Invalid PLP modulation type
DTAPI_E_INVALID_CRED Invalid carrier reduction coefficient
DTAPI_E_INVALID_EAS Invalid Emergency Alert Signal
DTAPI_E_INVALID_FECMODE Invalid L1-Basic or L1-Detail FEC-mode
DTAPI_E_INVALID_FECTYPE Invalid PLP FEC-type
DTAPI_E_INVALID_FFTMODE Invalid FFT-size
DTAPI_E_INVALID_FRAMELENG Invalid frame length
TH

DTAPI_E_INVALID_FRAMEMODE Invalid frame length mode


DTAPI_E_INVALID_GUARD Invalid guard interval
DTAPI_E_INVALID_HTI_PARS Invalid HTI interleaving parameters
DTAPI_E_INVALID_INP_TYPE Invalid input type; only ALP is supported
DTAPI_E_INVALID_LAYER Invalid PLP-layer type
DTAPI_E_INVALID_LDM_LEVEL Invalid LDM injection level
DTAPI_E_INVALID_MISO Invalid MISO parameter(s)
DTAPI_E_INVALID_NUM_INPUT Unexpected number of inputs
S

DTAPI_E_INVALID_PAPR Invalid PAPR mode

60
DTAPI – Multi-PLP Extensions
Reference Manual

DTAPI_RESULT Meaning
DTAPI_E_INVALID_PARITY Invalid additional parity mode
DTAPI_E_INVALID_PLP_REF Invalid PLP-ID reference
DTAPI_E_INVALID_PLP_SIZE Invalid PLP-size
DTAPI_E_INVALID_PLP_START Invalid PLP-start
DTAPI_E_INVALID_PLP_TYPE Invalid PLP-type
DTAPI_E_INVALID_TIME Invalid time information generation mode
DTAPI_E_INVALID_TIME_IL Invalid time interleaving mode or depth
DTAPI_E_INVALID_VERSION Invalid bootstrap minor version
DTAPI_E_NUM_PLP Invalid number of PLPs
DTAPI_E_NUM_SUBFRAMES Invalid number of subframes
DTAPI_E_NUM_SUBSLICES Invalid number of subslices symbols
DTAPI_E_NUM_SYMBOLS Invalid number of OFDM symbols
DTAPI_E_NUM_SYMBOLS Invalid number of OFDM symbols
DTAPI_E_PILOT_BOOST Invalid pilot boost factor
DTAPI_E_PILOT_PATTERN Invalid pilot pattern
DTAPI_E_PLP_ID Duplicate or invalid PLP IDs
DTAPI_E_PREAMBLE_PAR_COMB Invalid combination of preamble parameters
I

DTAPI_E_SUBSLICE_INTERVAL Invalid subslice interval

61
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbC2Pars::GetParamInfo
Get the ATSC 3.0 “derived” parameters.

DTAPI_RESULT DtAtsc3Pars::GetParamInfo(
[out] DtAtsc3ParamInfo& ParamInfo // ATSC 3.0 derived information
);

Parameters
ParamInfo
Output parameter that receives the ATSC 3.0 “derived” parameters.

Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
Other result values Error in modulation parameters, please refer to
DtAtsc3Pars::CheckValidity

62
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbC2Pars

Class DtDvbC2Pars
Class specifying parameters for DVB-C2 modulation.

class DtDvbC2Pars
{
int m_Bandwidth; // Bandwidth (channel raster)
int m_NetworkId; // Network ID
int m_C2SystemId; // C2-System ID
int m_StartFrequency; // Start frequency
int m_C2Bandwidth; // Bandwidth of the generated signal
int m_GuardInterval; // Guard interval
bool m_ReservedTone; // Reserved tones present (yes/no)
int m_L1TiMode; // L1 time interleaving mode
// Data-slice parameters
int m_NumDSlices; // Number of data slices
DtDvbC2DSlicePars m_DSlices[DTAPI_DVBC2_NUM_DSLICE_MAX];
// Notches
int m_NumNotches; // Number of notches
DtDvbC2NotchPars m_Notches[DTAPI_DVBC2_NUM_NOTCH_MAX];
// Parameters specifying the source for each PLP
int m_NumPlpInputs; // Number of PLP input streams
DtPlpInpPars m_PlpInputs[DTAPI_DVBC2_NUM_PLP_MAX];
// Miscellaneous: PAPR, Virtual output, Test-point output
DtDvbC2PaprPars m_PaprPars;
DtVirtualOutPars m_VirtOutput;
DtTestPointOutPars m_TpOutput;
// Parameters specifying the generated carriers of one C2-system
int m_OutpFreqOffset; // Output frequency offset
int m_OutpBandwidth; // Output bandwidth (0 means default)
// L1 updates
std::vector<DtDvbC2L1UpdatePars> m_L1Updates;
};

Public members
m_Bandwidth
Channel raster of the network.
Value Meaning
DTAPI_DVBC2_6MHZ 6 MHz
DTAPI_DVBC2_8MHZ 8 MHz

m_NetworkId
Network ID. Unique identification of the DVB-C2 network. The valid range is 0 … 0xFFFF.
m_C2SystemId
C2-System ID. Unique identification of a C2-System. The valid range is 0 … 0xFFFF.

63
DTAPI – Multi-PLP Extensions
Reference Manual

m_StartFrequency
Start frequency of the C2-System by means of the distance from 0Hz in multiples of the carrier
spacing. The valid range is 0 … 0xFFFFFF and multiples of DX. (DX=24 for guard interval 1/128
and DX=12 for guard interval 1/64).
m_C2Bandwidth
Bandwidth of the generated signal in multiples of pilot carrier spacing. The valid range is
0 ... 65535.
m_GuardInterval
The guard interval between OFDM symbols.
Value Meaning
DTAPI_DVBC2_GI_1_128 1/128
DTAPI_DVBC2_GI_1_64 1/64

m_ReservedTone
If true, indicates one or more reserved tones (carriers) are used. When carriers are reserved (e.g
PAPR TR is enabled) it shall be set to true.
m_L1TiMode
L1 time interleaving mode.
Value Meaning
DTAPI_DVBC2_L1TIMODE_NONE No time interleaving
DTAPI_DVBC2_L1TIMODE_BEST Best fit
DTAPI_DVBC2_L1TIMODE_4 4 OFDM symbols
DTAPI_DVBC2_L1TIMODE_8 8 OFDM symbols

m_NumDSlices
Specifies the number of data slices in the C2-System. The valid range is
1 … DTAPI_DVBC2_NUM_DSLICE_MAX.
m_DSlices
Array specifying the DVB-C2 parameters for the data slices.
m_NumNotches
Specifies the number of notch bands in the C2-System. The valid range is
0 … DTAPI_DVBC2_NUM_NOTCH_MAX.
m_Notches
Array specifying the notch bands in the C2-System.
m_NumPlpInputs
Specifies the number of PLP inputs in the C2-System. The valid range is
1 … DTAPI_DVBC2_NUM_PLP_MAX.
m_PlpInputs
Array specifying the PLP input streams. The index in the array is related to the index of a PLP in
the C2 System (i.e. the first DtPlpInpPars in the array is related to the first PLP in the C2 System,
which is the first PLP in the first data slice).
Note that PLPs in empty data slices are not taken into account and in case of bundled PLPs only
the first PLP occurrence is taken into account.

64
DTAPI – Multi-PLP Extensions
Reference Manual

m_PaprPars
Specifies the PAPR reduction parameters.
m_VirtOutput
In case of a virtual output m_VirtOutput specifies the virtual output data parameters.
m_TpOutput
In case of a virtual output m_VirtOutput specifies the virtual output data parameters.
m_OutpFreqOffset
Output frequency offset from m_StartFrequency (in carriers) of the generated spectrum. Must
be a multiple of the carrier spacing (DX=24 for guard interval 1/128 and DX=12 for guard
interval 1/64). m_OutpFreqOffset in combination with m_OutpBandwidth can be used to
output a part of carriers of one C2-system.
m_OutpBandwidth
Output bandwidth (in carriers). 0 selects the default output bandwidth. Must be a multiple of the
carrier spacing (DX=24 for guard interval 1/128 and DX=12 for guard interval 1/64).
m_L1Updates
A series of L1 signalling part2 parameters updates. The first update is applied immediately. After
the last update is applied, it loops to the first one .

Remarks
This class is used both for the initialization of the multi-PLP modulator and the traditional single-PLP
DVB-C2 modulator. The DtOutpChannel::SetModControl() method sets the parameters for the
single-PLP DVB-C2 modulator. Thereafter DtOutpChannel::Write method is used to write the data
to the output channel.
The DtMplpOutpChannel::SetModControl() method sets the parameters for the multi-PLP DVB-
C2 modulator. The multi-PLP modulator can be used for both single-PLP and multi-PLP parameter
sets. The DtMplpOutpChannel::WriteMplp method is used to write data to the output channel.

65
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbC2Pars::CheckValidity
Check DVB-C2 parameters for validity.

DTAPI_RESULT DtDvbC2Pars::CheckValidity(void);

Parameters
Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
DTAPI_E_BROADBAND_NOTCH Broadband notch cannot be inside a data slice
DTAPI_E_DSLICE_OFFSETS Invalid data slice offset
DTAPI_E_DSLICE_OVERLAP Data slices cannot overlap
DTAPI_E_DSLICE_T1_NDP Null-packet deletion not allowed for type1 data slices
DTAPI_E_DSLICE_T1_TSRATE TS-rate/ISSY combination not possible for type1 data slice
DTAPI_E_DSLICE_TUNE_POS Invalid data slice tune position
DTAPI_E_INVALID_PARS Invalid parameter value (generic error)
DTAPI_E_INVALID_RATE PLP TS-rate is too high
DTAPI_E_INVALID_START_FRE Invalid start frequency
Q

DTAPI_E_NO_TSRATE PLP TS-rate is not specified


DTAPI_E_NOTCH_OFFSETS Invalid notch
DTAPI_E_L1_PART2_TOO_LONG L1 part 2 data is too long
DTAPI_E_PLP_BUNDLED Inconsistent PLP bundled parameters
DTAPI_E_PLP_ID Duplicate PLP IDs

66
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbC2Pars::GetParamInfo
Get the DVB-C2 “derived” parameters.

DTAPI_RESULT DtDvbC2Pars::GetParamInfo(
[out] DtDvbC2ParamInfo& ParamInfo // DVB-C2 derived information
);

Parameters
ParamInfo
Output parameter that receives the DVB-C2 “derived” parameters.

Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
Other result values Error in modulation parameters, please refer to
DtDvbC2Pars::CheckValidity

67
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbT2ComponentPars

DtDvbT2ComponentPars
Class describing the modulation parameters for one DVB-T2 component (e.g. base or lite).

class DtDvbT2ComponentPars
{
int m_T2Version; // DVB-T2 specification version
int m_T2Profile; // DVB-T2 profile
bool m_T2BaseLite; // T2-Lite is used in a base profile
int m_Bandwidth; // DVB-T2 channel bandwidth
int m_FftMode; // FFT mode (or size)
int m_Miso; // MISO mode
int m_GuardInterval; // Guard interval
int m_Papr; // PAPR reduction mode
int m_BwtExt; // Bandwidth extension
int m_PilotPatern; // Pilot pattern
int m_L1Modulation; // L1 modulation type
int m_CellId; // Cell ID
int m_NetworkId; // Network ID
int m_T2SystemId; // T2 system ID
bool m_L1Repetition; // L1 repetition (yes/no)
int m_NumT2Frames; // Number of T2 frames in a super frame
int m_NumDataSyms; // Number of data OFDM symbols per T2-frame
int m_NumSubslices; // Number of subslices per T2-frame
int m_ComponentStartTime; // Offset (T) at which the component starts
bool m_FefEnable; // Insert FEF (yes/no)
int m_FefType; // FEF type
int m_FefS1; // FEF S1 field value
int m_FefS2; // FEF S2 field value
int m_FefLength; // FEF length
int m_FefInterval; // FEF interval
int m_FefSignal; // Type of signal during FEF period
int m_NumRfChans; // Number of RF channels
int m_RfChanFreqs[DTAPI_DVBT2_NUM_RF_MAX];
// Array of RF channel frequencies
int m_StartRfIdx; // First used RF channel
int m_NumPlps; // Number of PLPs
std::vector<DtDvbT2PlpPars> m_Plps;
// Vector of PLP parameters
std::vector<DtPlpInpPars> m_PlpInputs;
// Vector of PLP input stream
DtDvbT2AuxPars m_Aux; // AUX streams
DtDvbT2PaprPars m_PaprPars;// PAPR reduction parameters
DtDvbT2TxSigPars m_TxSignature;
// Transmitter signature parameters
DtDvbT2RbmValidation m_RbmValidation;
// Receiver Buffer Model validation
DtTestPointOutPars m_TpOutput;
// Test point data output parameters
};

68
DTAPI – Multi-PLP Extensions
Reference Manual

Public members
m_T2Version
DVB-T2 specification version.
Value Meaning
DTAPI_DVBT2_VERSION_1_1_1 Version 1.1.1
DTAPI_DVBT2_VERSION_1_2_1 Version 1.2.1
DTAPI_DVBT2_VERSION_1_3_1 Version 1.3.1

m_T2Profile
DVB-T2 profile.
Value Meaning
DTAPI_DVBT2_PROFILE_BASE Base profile
DTAPI_DVBT2_PROFILE_LITE Lite profile (Requires DVB-T2 version 1.3.1)

m_T2BaseLite
If true, T2 lite is used in a base profile component.
m_Bandwidth
The bandwidth of the channel.
Value Meaning
DTAPI_DVBT2_1_7MHZ 1.7 MHz
DTAPI_DVBT2_5MHZ 5 MHz
DTAPI_DVBT2_6MHZ 6 MHz
DTAPI_DVBT2_7MHZ 7 MHz
DTAPI_DVBT2_8MHZ 8 MHz
DTAPI_DVBT2_10MHZ 10 MHz

m_FftMode
The FFT size used for computing OFDM symbols.
Value Meaning
DTAPI_DVBT2_FFT_1K 1K FFT
DTAPI_DVBT2_FFT_2K 2K FFT
DTAPI_DVBT2_FFT_4K 4K FFT
DTAPI_DVBT2_FFT_8K 8K FFT
DTAPI_DVBT2_FFT_16K 16K FFT
DTAPI_DVBT2_FFT_32K 32K FFT

m_Miso
MISO mode. This mode can be used to simulate antenna 1 (TX1), antenna 2 (TX2) or the aver-
age of antenna 1 and antenna 2 (TX1+TX2) to simulate reception halfway between the anten-
nas.

69
DTAPI – Multi-PLP Extensions
Reference Manual

Value Meaning
DTAPI_DVBT2_MISO_OFF No MISO
DTAPI_DVBT2_MISO_TX1 TX1 only
DTAPI_DVBT2_MISO_TX2 TX2 only
DTAPI_DVBT2_MISO_SUM TX1+ TX2 through one output channel
DTAPI_DVBT2_MISO_BOTH Both TX1and TX2 through two output channels

m_GuardInterval
The guard interval between OFDM symbols.
Value Meaning
DTAPI_DVBT2_GI_1_128 1/128
DTAPI_DVBT2_GI_1_32 1/32
DTAPI_DVBT2_GI_1_16 1/16
DTAPI_DVBT2_GI_19_256 19/256
DTAPI_DVBT2_GI_1_8 1/8
DTAPI_DVBT2_GI_19_128 19/128
DTAPI_DVBT2_GI_1_4 1/4

m_Papr
The peak to average power reduction method. This is used to fill PAPR field in the L1-post sig-
nalling block.
Value Meaning
DTAPI_DVBT2_PAPR_NONE None
DTAPI_DVBT2_PAPR_ACE ACE - Active Constellation Extension
DTAPI_DVBT2_PAPR_TR TR - Power reduction with reserved carriers
DTAPI_DVBT2_PAPR_ACE_TR ACE and TR

m_BwtExt
If true, the extended carrier mode is used.
m_PilotPattern
The Pilot Pattern used.
Value Meaning
DTAPI_DVBT2_PP_1 PP1
DTAPI_DVBT2_PP_2 PP2
DTAPI_DVBT2_PP_3 PP3
DTAPI_DVBT2_PP_4 PP4
DTAPI_DVBT2_PP_5 PP5

70
DTAPI – Multi-PLP Extensions
Reference Manual

DTAPI_DVBT2_PP_6 PP6
DTAPI_DVBT2_PP_7 PP7
DTAPI_DVBT2_PP_8 PP8

m_L1Modulation
The modulation type used for the L1-post signalling block.
Value Meaning
DTAPI_DVBT2_BPSK BPSK
DTAPI_DVBT2_QPSK QPSK
DTAPI_DVBT2_QAM16 16-QAM
DTAPI_DVBT2_QAM64 64-QAM

m_CellId
Cell ID. Unique identification of a geographic cell in a DVB-T2 network. The valid range is
0 … 0xFFFF.
m_NetworkId
Network ID. Unique identification of the DVB-T2 network. The valid range is 0 … 0xFFFF.
m_T2SystemId
T2 system ID. Unique identification of the T2 system. The valid range is 0 … 0xFFFF.
m_L1Repetition
If true, L1 signalling is provided for the next frame.
m_NumT2Frames
The number of T2 frames in a super frame. The valid range is 1 … 255.
m_NumDataSyms
The number of data OFDM symbols per T2 frame, excluding P1 and P2.
m_NumSubslices
The number of subslices per T2-frame for type-2 PLPs.
m_ComponentStartTime
Specifies the offset in number of T-units at which the T2 component starts. Note: it should be set
to 0 for the first component.
m_FefEnable
If true, FEFs (Future Extension Frames) are inserted.
m_FefType
Specifies the FEF type. The valid range is 0 ... 15.
m_FefS1
The S1-field value in the P1 signalling data. Valid values: 2, 3, 4, 5, 6 and 7.
m_FefS2
The S2-field value in the P1 signalling data. Valid values: 1, 3, 5, 7, 9, 11, 13 and 15.

71
DTAPI – Multi-PLP Extensions
Reference Manual

m_FefLength
The length of a FEF-part in number of T-units (= samples). For the base profile the valid range
is 0 … 0x3FFFFF, for the lite profile the valid range is 0 … 0xFFFFFF.
m_FefInterval
The number of T2 frames between two FEF parts. The valid range is 1 … 255 and
m_NumT2Frames shall be divisible by m_FefInterval.
m_FefSignal
The type of signal generated during the FEF period.
Value Meaning
DTAPI_DVBT2_FEF_ZERO Zero I/Q samples
DTAPI_DVBT2_FEF_1K_OFDM 1K OFDM symbols with 852 active carriers containing
BPSK symbols
DTAPI_DVBT2_FEF_1K_OFDM_384 1K OFDM symbols with 384 active carriers containing
BPSK symbols

m_NumRfChans
The number of frequencies in the T2 system. The valid range is 1 … DTAPI_DVBT2_NUM_RF_MAX.
m_RfChanFreqs
Array specifying the center frequencies of the RF channels. This is only used to fill the L1-post
FREQUENCY fields. The valid range is 1 … 0xFFFFFFFF.
m_NumPlps
Specifies the number of physical layer pipes in the T2 system. The valid range is
1 … DTAPI_DVBT2_NUM_PLP_MAX. Must be set to ‘1’ in case not using the Multi-PLP modulator.
m_Plps
Vector specifying the DVB-T2 modulation parameters for the PLPs.
m_PlpInputs
Vector specifying the PLP input streams. This is only used in case of using the Multi-PLP modula-
tor. Default the FIFO index and PLP index maps 1:1 and “Big-TS splitting” is disabled.
m_Aux
Specifies the AUX stream parameters.
By default, the generation of AUX streams is disabled.
m_PaprPars
Specifies the PAPR reduction parameters.
By default, PAPR reduction is disabled.
m_TxSignature
Specifies the transmission of the DVB-T2 transmitter signature.
By default, the transmission of a transmitter signature is disabled.
m_RbmValidation
Specifies the Receiver Buffer Model validation. This can only be used with the Multi-PLP modu-
lator.
By default, RBM-validation is disabled.
m_TpOutput
Specifies the generation of test point data.

72
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbT2Pars

DtDvbT2Pars
Class describing parameters for DVB-T2 modulation, it describes the modulation parameters of a
DVB-T2 component and optionally the parameters of a second component (e.g. base and a lite pro-
file). The class DtDvbT2ComponentPars describes the component parameters.

class DtDvbT2Pars : public DtDvbT2ComponentPars


{
int m_NumFefComponents; // Number of DVB-T2 components in FEF part
DtDvbT2ComponentPars m_FefComponent[1];
// Parameters for a second DVB-T2 component

DtVirtualOutPars m_VirtOutput;
// Virtual-output parameters
DtDvbT2MiPars m_T2Mi; // T2-MI output parameters
};

Inherited Public members


The public members inherited from DtDvbT2ComponentPars describe the modulation parameters for
the first DVB-T2 component; see description of class DtDvbT2ComponentPars.

Public members
m_NumFefComponents
The number of DVB-T2 components transmitted in the FEF part of the first DVB-T2 component.
The parameters for these DVB-T2 components are specified in m_FefComponent. The valid
range is 0 … 1.
m_FefComponent
Array specifying the DVB-T2 modulation parameters for the DVB-T2 components transmitted in
the FEF part of the first DVB-T2 component.
m_VirtOutput
When the output channel has been attached to a virtual output, m_VirtOutput specifies the
virtual output data parameters. This can only be used with the Multi-PLP modulator.
By default, the virtual output parameters are disabled.
m_T2Mi
Specifies the parameters for generation of T2-MI. This can only be used with the Multi-PLP mod-
ulator.
By default, the output of T2-MI is disabled.

Remarks
This class is used both for the initialization of the multi-PLP modulator and the traditional single-PLP
DVB-T2 modulator. The DtOutpChannel::SetModControl() method sets the parameters for the
single-PLP DVB-T2 modulator. Thereafter DtOutpChannel::Write method is used to write the data
to the output channel.
The DtMplpOutpChannel::SetModControl() method sets the parameters for the multi-PLP DVB-T2
modulator. The multi-PLP modulator can be used for both single-PLP and multi-PLP parameter sets.
The DtMplpOutpChannel::WriteMplp method is used to write data to the output channel.

73
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbT2Pars::CheckValidity
Check DVB-T2 parameters for validity.

DTAPI_RESULT DtDvbT2Pars::CheckValidity(void);

Parameters
Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
DTAPI_E_BIAS_BAL_CELLS Invalid number of bias balancing cells
DTAPI_E_BUFS Invalid BUFS values
DTAPI_E_COMMON_PLP_COUNT More than one common PLP per group ID
DTAPI_E_COMP_OVERLAP The fames of two components (lite and base profile) overlap.
DTAPI_E_FEF Error in FEF parameters
DTAPI_E_FIXED_CELL_PARS Invalid fixed cell parameters
DTAPI_E_FRAME_INTERVAL Frame interval must divide number of T2 frames
DTAPI_E_INVALID_BWT_EXT Invalid bandwidth extension
DTAPI_E_INVALID_FFTMODE Invalid FFT mode
DTAPI_E_INVALID_GUARD Invalid guard interval
DTAPI_E_INVALID_NUMDTSYM Invalid number of data symbols
DTAPI_E_INVALID_NUMT2FRM Invalid number of T2 frames
DTAPI_E_INVALID_PARS Invalid parameter value (generic error)
DTAPI_E_INVALID_TIME_IL Invalid time interleaver length
DTAPI_E_MULTI_COMPS Invalid mix of parameters in multi component configuration
DTAPI_E_NO_TSRATE PLP TS-rate is not specified
DTAPI_E_NUM_PLP Too many PLPs (i.e. L1 data too large)
DTAPI_E_OTHER_PLP_IN_BAND Invalid PLP ID in m_OtherPlpInBand array
DTAPI_E_PILOT_PATTERN Pilot pattern not allowed in combination with other parame-
ters
DTAPI_E_PLP_ID Duplicate PLP IDs
DTAPI_E_PLP_NUM_BLOCKS Invalid number of PLP blocks (not enough bandwidth)
DTAPI_E_SUBSLICES Number of subslices and/or TIME_IL_LENGTH does not give
an integer number of cells per subslice
DTAPI_E_T2_LITE Invalid T2 lite profile parameters
DTAPI_E_TI_MEM_OVF Too many cells in time interleaver

74
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbT2Pars::GetParamInfo
Get the DVB-T2 “derived” parameters.

DTAPI_RESULT DtDvbT2Pars::GetParamInfo(
[out] DtDvbT2ParamInfo& ParamInfo // (First) T2-component information
);
DTAPI_RESULT DtDvbT2Pars::GetParamInfo(
[out] DtDvbT2ParamInfo& ParamInfo1, // First T2-component information
[out] DtDvbT2ParamInfo& ParamInfo2 // Second T2-component information
);

Parameters
ParamInfo, ParamInfo1
Output parameter that receives the DVB-T2 “derived” parameters of the first component.
ParamInfo2
Output parameter that receives the DVB-T2 “derived” parameters of the second component.

Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
Other result values Error in modulation parameters, please refer to
DtDvbT2Pars::CheckValidity

75
DTAPI – Multi-PLP Extensions
Reference Manual

DtDvbT2Pars::OptimisePlpNumBlocks
Compute the optimum value of DVB-T2 parameters to maximise the DVB-T2 channel’s bitrate and
compute the achieved efficiency.

// Overload #1 - Get optimum value for PLP_NUM_BLOCKS


DTAPI_RESULT DtDvbT2Pars::GetParamInfo(
[out] DtDvbT2ParamInfo& ParamInfo // DVB-T2 efficiency information
[out] Int& OptPlpNumBlocks // Optimum number of blocks
);
// Overload #2 – Get optimum value for PLP_NUM_BLOCKS and NUM_DATA_SYMBOLS
DTAPI_RESULT DtDvbT2Pars::GetParamInfo(
[out] DtDvbT2ParamInfo& ParamInfo // DVB-T2 efficiency information
[out] Int& OptPlpNumBlocks // Optimum number of blocks
[out] Int& OptNumDataSyms // Optimum number data symbols
);

Parameters
ParamInfo
Output parameter that receives the DVB-T2 “derived” parameters based on the optimum pa-
rameter values.
OptPlpNumBlocks
Output parameter that is set to the optimum value for the number of FEC blocks per IL frame
for PLP0 to maximise the DVB-T2 channel’s bitrate.
OptNumDataSyms
Output parameter that is set to the optimum value for the number of data OFDM symbols per
T2 frame to maximise the DVB-T2 channel’s bitrate.

Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
Other result values Error in modulation parameters, please refer to
DtDvbT2Pars::CheckValidity

Remarks
These methods can only be used in case of a single PLP (member variable m_NumPlps equals 1).

76
DTAPI – Multi-PLP Extensions
Reference Manual

DtIsdbTmmPars

Class DtIsdbTmmPars
Class specifying parameters for ISDB-Tmm modulation.

class DtIsdbTmmPars
{
int m_Bandwidth; // Bandwidth (channel raster)
int m_SubChannel; // Sub-channel of the center segment
// TS parameters
int m_NumTss; // Number of transport streams
DtIsdbtPars m_Tss[DTAPI_ISDBT_NUM_TS_MAX];
DtPlpInpPars m_TsInputs[DTAPI_ISDBT_NUM_TS_MAX];
// Virtual output
DtVirtualOutPars m_VirtOutput;
};

Public members
m_Bandwidth
Channel raster of the network.
Value Meaning
DTAPI_ISDBT_BW_6MHZ 6 MHz
DTAPI_ISDBT_BW_7MHZ 7 MHz
DTAPI_ISDBT_BW_8MHZ 8 MHz

m_SubChannel
Sub channel of the center segment of the spectrum, which implicitly specifies the sub-channels
of the 1-segment streams in the signal. The valid range is 0 … 41.
m_NumTss
Specifies the number of transport streams in the ISDB-Tmm system. The valid range is
0 … DTAPI_ISDBT_NUM_TS_MAX.
m_Tss
An array of DtIsdbtPars, specifying the modulation parameters for each transport stream. The
index in the array is related to the index of the transport stream in the ISDB-Tmm system.
See the description of struct DtIsdbtPars in “DTAPI Reference – Core Classes”.
m_TsInputs
Array specifying the input transport streams. The index in the array is related to the index of the
transport stream in the ISDB-Tmm system.
m_VirtOutput
In case of a virtual output m_VirtOutput specifies the virtual output data parameters.

Remarks
This class is only used for the initialization of the multi-PLP modulator. The class DtIsdbtPars can be
used to initialize the traditional single-PLP modulator.

77
DTAPI – Multi-PLP Extensions
Reference Manual

DtIsdbTmmPars::CheckValidity
Check ISDB-T parameters for validity.

DTAPI_RESULT DtIsdbTmmPars::CheckValidity(void);

Parameters
Result
DTAPI_RESULT Meaning
DTAPI_OK Parameters are valid
DTAPI_E_INVALID_BANDWIDTH Invalid value for bandwidth or not equal for all streams
DTAPI_E_INVALID_BTYPE Invalid value for broadcast type
DTAPI_E_INVALID_GUARD Invalid value for guard-interval length or not equal for all
streams
DTAPI_E_INVALID_MODE Invalid value for transmission mode or not equal for all
streams
DTAPI_E_INVALID_NUMSEGM Number of segments is more than 33 or the number of seg-
ments in a streams is not equal to 1, 3 or 13, or number of
segments is invalid for the current broadcast type does not
match number of segments specified in m_LayerPars
DTAPI_E_INVALID_PARTIAL ‘Partial Reception’ is selected for a stream but the number of
segments in layer A is not 1
DTAPI_E_INVALID_SIZE ‘No hierarchical multiplexing’ (use TMCC) is selected for a
stream where the input type is 188-byte TS packets
DTAPI_E_INVALID_SUBCH Invalid sub-channel number

78
DTAPI – Multi-PLP Extensions
Reference Manual

Callback Functions

DtTpWriteDataFunc
User-supplied callback function used for the processing of test-point data. The data can be written to
a file, or processed otherwise.

void DtTpWriteDataFunc(
[in] void* pOpaque, // Opaque pointer
[in] int TpIndex, // Test point
[in] int StreamIndex // Stream index
[in] const void* pBuffer, // Test-point data buffer
[in] int Length, // Number of data items
[in] int Format, // Test point data format
[in] float Mult, // Multiplication factor
[in] int IsNewFrame // New frame (yes/no)
);

Parameters
pOpaque
The opaque pointer that was specified in DtTestPointOutPars.
TpIndex
Specifies the test point.
For DVB-C2 the following test points are defined:
Value Meaning
DTAPI_DVBC2_TPnn DVB-C2 test point nn
Where nn is: 07, 08, 10, 13, 15, 18, 20, 22, 26, 27, 31, 32, 33, 37, 40, 41 and 42.

For DVB-T2 the following test points are defined:


Value Meaning
DTAPI_DVBT2_TPnn DVB-T2 test point nn
Where nn is: 03, 04, 06, 08, 09, 11, 12, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30,
32, 33, 34, 50, 51 and 53.
StreamIndex
Identifies the stream. For DVB-C2 bits 0..7 specify the PLP-ID and bits 8..15 specify the data
slice I. For DVB-T2 bits 0..7 specify the PLP-index and bit 8 is set when the PLP-type is a common
PLP.
pBuffer
Pointer to a buffer containing the test point data.
Length
Number of test points data items available in buffer.

79
DTAPI – Multi-PLP Extensions
Reference Manual

Format
The data format of the test-point data items.
Value Meaning
DTAPI_TP_FORMAT_HEX Byte data
DTAPI_TP_FORMAT_BIT Bit data. Eight bits are packaged per byte, most significant bit
first
DTAPI_TP_FORMAT_CFLOAT32 Complex 32-bit floating-point data of type DtComplexFloat

DTAPI_TP_FORMAT_INT64 64-bit integer data

Mult
Multiplication factor for the complex floating point data.
IsNewFrame
If true, the test point data relates to a new frame.

80
DTAPI – Multi-PLP Extensions
Reference Manual

Global Functions

::DtapiModPars2TsRate
Compute Transport-Stream rate from modulation parameters. There are three new overloads one for
DVB-C2, one for DVB-T2 and one for ISDB-Tmm modulation type.

// Overload to be used for DVB-C2


DTAPI_RESULT ::DtapiModPars2TsRate(
[out] int& TsRate // Computed Transport-Stream rate
[in] DtDvbC2Pars C2Pars, // DVB-C2 modulation parameters
[in] int PlpIdx // PLP index
);
// Overload to be used for DVB-T
DTAPI_RESULT ::DtapiModPars2TsRate(
[out] int& TsRate // Computed Transport-Stream rate
[in] DtDvbTPars TPars, // DVB-T modulation parameters
[in] int Idx // Idx=0: high priority stream; idx=1 low
// priority stream
);
// Overload to be used for DVB-T2
DTAPI_RESULT ::DtapiModPars2TsRate(
[out] int& TsRate // Computed Transport-Stream rate
[in] DtDvbT2Pars T2Pars, // DVB-T2 modulation parameters
[in] int PlpIdx // PLP index
);
// Overload to be used for ISDB-Tmm
DTAPI_RESULT ::DtapiModPars2TsRate(
[out] int& TsRate // Computed Transport-Stream rate
[in] DtIsdbTmmPars TmmPars, // ISDB-Tmm modulation parameters
[in] int TsIdx // TS index
);

Parameters
TsRate
The Transport-Stream rate in bps computed from the modulation parameters.
C2Pars
DVB-C2 modulation parameters; see description of class DtDvbC2Pars.
TPars
DVB-T2 modulation parameters; see the description of struct DtDvbTPars in “DTAPI Reference
– Core Classes”.
T2Pars
DVB-T2 modulation parameters; see description of class DtDvbT2Pars.
TmmPars
ISDB-Tmm modulation parameters; see description of class DtIsdbTmmPars.
PlpIdx
The index of the PLP for which the Transport-Stream rate is computed.

81
DTAPI – Multi-PLP Extensions
Reference Manual

TsIdx
The index of the TS in the ISDB-Tmm system for which the Transport-Stream rate is computed.

Result
DTAPI_RESULT Meaning
DTAPI_OK The TS rate has been computed from the modulation pa-
rameters successfully
Other result values Error in modulation parameters, please refer to
DtDvbC2Pars::CheckValidity ,
DtDvbT2Pars::CheckValidity and
DtIsdbTmmPars::CheckValidity

82
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel

DtMplpOutpChannel
Class representing a multi-PLP modulator for modulation of DVB-C2, DVB-T2 and ISDB-Tmm signals.
Class DtMplpOutpChannel is derived from DtOutpChannel. For the inherited methods, please refer
to the DTAPI documentation.

class DtMplpOutpChannel : public DtOutpChannel;

83
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::AttachVirtual
Attach the output-channel object to a virtual output using the licenses of a particular device. A virtual
output lets the user pass the output data to the specified callback function, instead of DTAPI writing
the data to a physical output.

DTAPI_RESULT DtMplpOutpChannel::AttachVirtual(
[in] DtDevice* pDtDevice, // Object representing a DekTec device
[in] bool (*pFunc)(void*, DtVirtualOutData*),
// Pointer to the callback function
[in] void* pOpaque // Opaque pointer for the callback function
);

Parameters
pDtDvc
Pointer to the object that represents a DekTec device. The DtDevice object must be attached to
the device hardware. The device is used only for reading licenses.
pFunc
Pointer to the callback function that will handle the generated output data. When the virtual-
output calls this function the opaque pointer and a pointer to a DtVirtualOutData struct de-
scribing the output data are passed. To prevent hanging of the application, the callback function
is not allowed to block. In case the callback function has to wait for a certain condition, it can
return the Boolean value false. After a few milliseconds the virtual-output will call this function
again with the same parameters and will repeat this until the callback function returns the Bool-
ean value true.
pOpaque
Opaque pointer that is passed to the callback function.

Result
DTAPI_RESULT Meaning
DTAPI_OK Channel object has been attached successfully
DTAPI_E_ATTACHED The channel object is already attached a hardware function
DTAPI_E_DEVICE The DtDevice pointer is not valid or the DtDevice object is not
attached to the device hardware
DTAPI_E_INVALID_ARG The value of one of the parameters is invalid

Remarks
The intended usage for this method is to allow the user to output the multi-PLP modulator result to file
or to a specific device. The licenses are taken from the DekTec device.

84
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::GetMplpFifoFree
Get the number of free bytes in the specified multi-PLP modulator FIFO.

DTAPI_RESULT DtMplpOutpChannel::GetMplpFifoFree(
[in] int FifoIndex // FIFO index
[out] int& FifoFree // Number of free bytes in the FIFO
);

Parameters
FifoIndex
Specifies the FIFO index.
FifoFree
Free space in the specified multi-PLP modulator FIFO, in number of bytes.

Result
DTAPI_RESULT Meaning
DTAPI_OK FIFO free has been retrieved successfully
DTAPI_E_NOT_ATTACHED Channel object is not attached

Remarks
If a Data transfer is in progress and/or the transmit-control state is DTAPI_TXCTRL_HOLD or
DTAPI_TXCTRL_SEND, then every call to GetMplpFifoFree may return a different value.

85
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::GetMplpFifoSize
Get the current size of the multi-PLP modulator FIFO.

DTAPI_RESULT DtMplpOutpChannel::GetMplpFifoSize(
[in] int FifoIndex // FIFO index
[out] int& FifoSize // Size of Transmit FIFO in bytes
);

Parameters
FifoIndex
Specifies the FIFO index.
FifoSize
Size of the multi-PLP modulator FIFO in number of bytes.

Result
DTAPI_RESULT Meaning
DTAPI_OK FIFO size has been retrieved successfully
DTAPI_E_NOT_ATTACHED Channel object is not attached to a hardware function

Remarks
The size of the multi-PLP modulator FIFOs is fixed, it cannot be changed.

86
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::GetMplpModStatus
Get the status of the multi-PLP modulator. There are overloads for DVB-C2 and for DVB-T2.

DTAPI_RESULT DtMplpOutpChannel::GetMplpModStatus(
[out] DtDvbC2ModStatus* pDvbC2ModStat // Status of DVB-C2
modulator
);
DTAPI_RESULT DtMplpOutpChannel::GetMplpModStatus(
[out] DtDvbT2ModStatus* pDvbT2ModStat // Status of DVB-T2
modulator
);
DTAPI_RESULT DtMplpOutpChannel::GetMplpModStatus(
[out] DtDvbT2ModStatus* pDvbT2ModStat1 // Status of DVB-T2
modulator for the first component
[out] DtDvbT2ModStatus* pDvbT2ModStat2 // Status of DVB-T2
modulator for the second component
);

Parameters
pDvbC2ModStat
DVB-C2 modulator status; see description of struct DtDvbC2ModStatus.
pDvbT2ModStat, pDvbT2ModStat1
DVB-T2 modulator status for the first component; see description of struct
DtDvbT2ModStatus.

pDvbT2ModStat2
DVB-T2 modulator status for the second component; see description of struct
DtDvbT2ModStatus.

Result
DTAPI_RESULT Meaning
DTAPI_OK The status of the MPLP modulator has been retrieved success-
fully
DTAPI_E_IDLE Not allowed when in IDLE state
DTAPI_E_NOT_ATTACHED Channel object is not attached to a hardware function
DTAPI_E_NOT_SUPPORTED The currently active modulator does not support the request

Remarks

87
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::SetMplpChannelModelling
Set channel-modelling parameters. This function may only be called when using the multi-PLP modu-
lator while the transmit-control state is DTAPI_TXCTRL_IDLE.

DTAPI_RESULT DtMplpOutpChannel::SetMplpChannelModelling(
[in] bool CmEnable, // Enable/disable channel modelling
[in] DtCmPars& CmPars // Channel modelling parameters
[in] int ChannelIdx=0 // Output channel index
);

Parameters
CmEnable
Enable channel modelling. This parameter provides an easy way to turn off channel modelling
entirely for the specified output channel.
CmPars
Channel-modelling parameters. See description of struct DtCmPars in “DTAPI Reference – Core
Classes”.
ChanneIdx
Index of the output channel (e.g. to specify the channel modelling parameters for the individual
transmitters in case of MISO).

Result
DTAPI_RESULT Meaning
DTAPI_OK Channel-modelling parameters have been applied successfully
DTAPI_E_CM_NUMPATHS The number of paths specified in CmPars exceeds the maximum
number of paths
DTAPI_E_NOT_ATTACHED Channel object is not attached to a hardware function
DTAPI_E_NOT_SUPPORTED The channel has no license for channel-modelling, or channel
modelling is not supported for this type of channel

Remarks

88
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::SetModControl
Set modulation-control parameters for modulator channels. There are five overloads defined for the
multi-PLP modulator output: ATSC 3.0, DVB-C2, DVB-T, DVB-T2 and one for ISDB-Tmm.

// Overload to be used for ATSC 3.0


DTAPI_RESULT DtMplpOutpChannel::SetModControl(
[in] DtAtsc3Pars& Atsc3Pars // ATSC 3.0 modulation parameters
);
// Overload to be used for DVB-C2
DTAPI_RESULT DtMplpOutpChannel::SetModControl(
[in] DtDvbC2Pars& DvbC2Pars // DVB-C2 modulation parameters
);
// Overload to be used for DVB-T
DTAPI_RESULT DtMplpOutpChannel::SetModControl(
[in] DtDvbTPars& DvbTPars // DVB-T modulation parameters
);
// Overload to be used for DVB-T2
DTAPI_RESULT DtMplpOutpChannel::SetModControl(
[in] DtDvbT2Pars& DvbT2Pars // DVB-T2 modulation parameters
);
// Overload to be used for ISDB-Tmm
DTAPI_RESULT DtMplpOutpChannel::SetModControl(
[in] DtIsdbTmmPars& IsdbTmmPars // ISDB-Tmm modulation parameters
);

Parameters
Atsc3Pars
ATSC 3.0 modulation parameters; see description of class DtAtsc3Pars.
DvbC2Pars
DVB-C2 modulation parameters; see description of class DtDvbC2Pars.
DvbTPars
DVB-T modulation parameters; see the description of struct DtDvbTPars in “DTAPI Reference –
Core Classes”.
DvbT2Pars
DVB-T2 modulation parameters; see description of class DtDvbT2Pars.
IsdbTmmPars
ISDB-Tmm modulation parameters; see description of class DtIsdbTmmPars.

Result
DTAPI_RESULT Meaning
DTAPI_OK The modulation parameters have been set successfully
DTAPI_E_DEV_DRIVER Unclassified failure in device driver
DTAPI_E_IDLE Transmit-control state is not DTAPI_TXCTRL_IDLE;

89
DTAPI – Multi-PLP Extensions
Reference Manual

The requested modulation parameters can only be set in


idle state
DTAPI_E_NOT_ATTACHED Channel object is not attached to a hardware function
DTAPI_E_NOT_SUPPORTED The output channel does not support the specified modu-
lation type

Remarks
For DVB-T no FIFO index is specified through DvbTPars. FIFO index 0 is used for the high priority
stream and if DVB-T hierarchical modulation is enabled, FIFO index 1 is used for the low priority
stream.

90
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::WriteMplp
Write data to a multi-PLP modulator FIFO.

DTAPI_RESULT DtMplpOutpChannel::WriteMplp(
[in] int FifoIdx, // FIFO index
[in] char* pBuffer, // Pointer to data to be written to the FIFO
[in] int NumBytesToWrite // Number of bytes to be written
);

Parameters
FifoIndex
Specifies the FIFO index.
pBuffer
Pointer to the buffer containing the data to be written to the multi-PLP modulator FIFO. The
pointer must be aligned to a 32-bit word boundary.
NumBytesToWrite
Number of bytes to be to be written to the multi-PLP modulator FIFO. The buffer size must be
positive and a multiple of four.

Result
DTAPI_RESULT Meaning
DTAPI_OK Write operation has been completed successfully
DTAPI_E_INVALID_BUF The buffer is not aligned to a 32-bit word boundary
DTAPI_E_INVALID_FIFO_IDX Invalid FIFO index. FIFO index has not been specified in
DtMplpOutpChannel::SetModControl parameters

DTAPI_E_INVALID_SIZE The specified transfer size is negative or not a multiple of four


DTAPI_E_IDLE Cannot write data because transmission-control state is
DTAPI_TXCTRL_IDLE

DTAPI_E_NOT_ATTACHED Channel object is not attached to a hardware function

Remarks
The data buffer can be any buffer in user space. The data is only written when the transmit-control
state is DTAPI_TXCTRL_HOLD or DTAPI_TXCTRL_SEND (see DtOutpChannel::SetTxControl()),
and sufficient space is available in the FIFO. WriteMplp() returns when all data has been transferred
to the multi-PLP modulator FIFO.
The data from a multi-PLP modulator FIFO is only transferred to the modulator when all multi-PLP
modulator FIFOs carrying transport packets (data type TS188 or TS204) have data to contribute. The
contribution of multi-PLP modulator FIFOs carrying GSE-packets (data type GSE) is optional.
For this reason the thread executing WriteMplp() will sleep forever if NumBytesToWrite is greater
than the number of free bytes in the MPLP FIFO and one of the other MPLP FIFOs (data type TS188
or TS204) is empty.

91
DTAPI – Multi-PLP Extensions
Reference Manual

DtMplpOutpChannel::WriteMplpPacket
Write a GSE- or ALP-packets to a multi-PLP modulator FIFO.

DTAPI_RESULT DtMplpOutpChannel::WriteMplpPacket(
[in] int FifoIdx, // FIFO index
[in] char* pPacket, // Packet to be written to the FIFO
[in] int PacketSize // Size of the packet
);
DTAPI_RESULT DtMplpOutpChannel::WriteMplpPacket(
[in] int FifoIdx, // FIFO index
[in] char* pPacket, // Packet to be written to the FIFO
[in] int PacketSize // Size of the packet
[in] FractionInt Duration // Duration of the packet
);

Parameters
FifoIndex
Specifies the FIFO index.
pPacket
Pointer to one data packet (ALP or GSE).
For details on the GSE-packet data format, see DTAPI Manual – Overview and Data For-
mats.pdf. For details on the ALP-packet data format, see ATSC: “Link-Layer Protocol” Doc.
A/330.
PacketSize
Size of the data packet to be written to the multi-PLP modulator FIFO.
Duration
The duration of the data packet in seconds. It defines the earliest moment a next packet can be
transmitted.

Result
DTAPI_RESULT Meaning
DTAPI_OK Write operation has been completed successfully
DTAPI_E_INVALID_BUF The buffer is not aligned to a 32-bit word boundary
DTAPI_E_INVALID_FIFO_IDX Invalid FIFO index. FIFO index has not been specified in
DtMplpOutpChannel::SetModControl parameters

DTAPI_E_INVALID_INP_TYPE The data type of the FIFO is not ALP nor GSE

DTAPI_E_INVALID_SIZE The specified transfer size is negative or larger than the maxi-
mum packet size
DTAPI_E_IDLE Cannot write data because transmission-control state is
DTAPI_TXCTRL_IDLE

DTAPI_E_NOT_ATTACHED Channel object is not attached to a hardware function

Remarks
The data buffer can be any buffer in user space. The data is only written when the transmit-control
state is DTAPI_TXCTRL_HOLD or DTAPI_TXCTRL_SEND (see DtOutpChannel::SetTxControl()),

92
DTAPI – Multi-PLP Extensions
Reference Manual

and sufficient space is available in the FIFO. WriteMplpPacket() returns when all data has been
transferred to the multi-PLP modulator FIFO.
The data from a multi-PLP modulator FIFO is only transferred to the modulator when all multi-PLP
modulator FIFOs carrying transport packets (data type TS188 or TS204) have data to contribute. The
contribution of multi-PLP modulator FIFOs carrying GSE- or ALP-packets (data type GSE or ALP) is
optional.
For this reason the thread executing WriteMplpPacket() will sleep forever if PacketSize is greater
than the number of free bytes in the MPLP FIFO and one of the other MPLP FIFOs (data type TS188
or TS204) is empty.

93

You might also like