DtvKit_ATSC3.0
Loading...
Searching...
No Matches
atsc_core_atsc1.h
Go to the documentation of this file.
1/*******************************************************************************
2 * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3 *
4 * This file is part of a DTVKit Software Component
5 * You are permitted to copy, modify or distribute this file subject to the terms
6 * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
7 *
8 * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
9 * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
10 * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
11 *
12 * If you or your organisation is not a member of DTVKit then you have access
13 * to this source code outside of the terms of the licence agreement
14 * and you are expected to delete this and any associated files immediately.
15 * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
16 *******************************************************************************/
17
18#pragma once
19#include <stdio.h>
20#include <stdlib.h>
21#include <string.h>
22#include <string>
23#include <list>
24#include <vector>
25
26#include "atsc_core_utils_bitcalc.h"
27#include "atsc_core_utils_crc32.h"
28#include "atsc_types.h"
29
37typedef struct
38{
39 uint8_t cSyncByte;
41 uint32_t iPidVal;
42 uint32_t iTsErrInd;
43 uint32_t iAdFieldCtl;
44 uint32_t iPuStartInd;
45 uint32_t iTsPriority;
46 uint32_t iTsScrambCtl;
47 uint32_t iContCounter;
49
53typedef struct
54{
55 uint32_t iPcrFlag;
56 uint32_t iLtwFlag;
57 uint32_t iLtwOffset;
58 uint32_t iOpcrFlag;
59 uint32_t iEsPrioInd;
60 uint32_t iAdFieldLen;
61 uint32_t iDiscontInd;
62 uint32_t iSpliceType;
63 uint32_t iDTSNextAuMsb;
64 uint32_t iDTSNextAuLsb;
65 uint32_t iLtwValidFlag;
66 uint32_t iRandomAccInd;
67 uint32_t iAdFieldExtnLen;
68 uint32_t iPiecewiseRate;
69 uint32_t iTsPrivDataLen;
70 uint32_t iPgmClkRefExtn;
71 uint32_t iTsPriDataFlag;
72 uint32_t iStufByteCount;
84 uint8_t sPvtData[183];
86
90typedef struct
91{
92 bool bDone;
93 uint8_t cPvtIndicator;
95 uint8_t cTableId;
96 uint16_t iSectLen;
97 uint16_t iDataSize;
98 uint8_t sData[4096];
99 uint8_t sHeader[256];
101
105typedef struct
106{
107 int32_t iPgmNum;
108 uint32_t iPID;
109} sTsPmt_t;
110
114typedef struct
115{
116 int32_t iTableId;
117 int32_t iSectLen;
118 int32_t iPgmCount;
119 int32_t iPmtCount;
122 uint32_t iVerNum;
123 uint32_t iNextInd;
124 uint32_t iTsStreamId;
125 uint32_t iSectionNum;
127 uint64_t lCrcVal;
129 sTsPmt_t sPmt[64];
130} sTsPat_t;
131
135class CMpeg2Ts {
136public:
137
145
153
160 void init( void );
161
168 eATSCResult_t parser(uint8_t* pTs);
169
177 {
178 return tvct;
179 }
180
187 void ClearTvct( void )
188 {
189 memset(&tvct, 0x00, sizeof(tvct));
190 }
191
192private:
193 bool mPsipStart;
194 timespec iLastTvct;
195 sTsPat_t mTsPat;
196 CCRC32 *mCrc32;
197 sMpeg2Tvct_t tvct;
198 sPsipTable_t mPsipTable;
206 eATSCResult_t ParsePAT(uint8_t* pDataBuf, sTsPat_t *pPat);
207
215 bool CheckCRC(uint8_t * pFirst, uint8_t * pLast);
216
223 int32_t ParseTs(uint8_t *pDatabuf, sTsHeader_t *pHeader);
224
232 int32_t ParseAdaptationField(uint8_t *pData, sAdapField_t* pAdapField);
233};
eATSCResult_t
Definition atsc_types.h:203
Definition atsc_core_atsc1.h:135
sMpeg2Tvct_t get_tvct(void)
To get the MPEG-2 Transport Stream Video Characteristics Table.
Definition atsc_core_atsc1.h:176
eATSCResult_t parser(uint8_t *pTs)
Parse the TS header and adaptation field via ParseTs() & ParseAdaptationField().
void ClearTvct(void)
memset the MPEG-2 Transport Stream Video Characteristics Table header info.
Definition atsc_core_atsc1.h:187
CMpeg2Ts()
Creating the CRC handling and init CRC32 table with 0x04C11DB7.
~CMpeg2Ts()
Destructor for Mpeg2Ts class.
void init(void)
memset the variable "tvct".
Definition atsc_core_atsc1.h:54
uint32_t iPiecewiseRateFlag
Definition atsc_core_atsc1.h:79
uint32_t iOrgPgmClkRefBaseLow
Definition atsc_core_atsc1.h:81
uint32_t iAdFieldExtnFlag
Definition atsc_core_atsc1.h:73
uint32_t iAdFieldLen
Definition atsc_core_atsc1.h:60
uint32_t iSeamlessSpliceFlag
Definition atsc_core_atsc1.h:80
uint32_t iPcrFlag
Definition atsc_core_atsc1.h:55
uint32_t iSplicingPointFlag
Definition atsc_core_atsc1.h:78
uint32_t iRandomAccInd
Definition atsc_core_atsc1.h:66
uint32_t iPgmClkRefBaseHigh
Definition atsc_core_atsc1.h:77
uint32_t iOpcrFlag
Definition atsc_core_atsc1.h:58
uint32_t iSpliceCountdown
Definition atsc_core_atsc1.h:74
uint32_t iLtwOffset
Definition atsc_core_atsc1.h:57
uint32_t iAdFieldExtnLen
Definition atsc_core_atsc1.h:67
uint32_t iDTSNextAuMsb
Definition atsc_core_atsc1.h:63
uint32_t iStufByteCount
Definition atsc_core_atsc1.h:72
uint32_t iTsPrivDataLen
Definition atsc_core_atsc1.h:69
uint32_t iSpliceType
Definition atsc_core_atsc1.h:62
uint32_t iLtwValidFlag
Definition atsc_core_atsc1.h:65
uint32_t iTsPriDataFlag
Definition atsc_core_atsc1.h:71
uint32_t iPgmClkRefExtn
Definition atsc_core_atsc1.h:70
uint32_t iOrgPgmClkRefExtn
Definition atsc_core_atsc1.h:75
uint32_t iOrgPgmClkRefBaseHigh
Definition atsc_core_atsc1.h:82
uint32_t iLtwFlag
Definition atsc_core_atsc1.h:56
uint32_t iDTSNextAuLsb
Definition atsc_core_atsc1.h:64
uint32_t iEsPrioInd
Definition atsc_core_atsc1.h:59
uint32_t iPgmClkRefBaseLow
Definition atsc_core_atsc1.h:76
uint32_t iPiecewiseRate
Definition atsc_core_atsc1.h:68
uint32_t iDiscontInd
Definition atsc_core_atsc1.h:61
Definition atsc_types.h:358
Definition atsc_core_atsc1.h:91
uint8_t cPvtIndicator
Definition atsc_core_atsc1.h:93
uint8_t cSectSyntaxInd
Definition atsc_core_atsc1.h:94
uint16_t iSectLen
Definition atsc_core_atsc1.h:96
bool bDone
Definition atsc_core_atsc1.h:92
uint8_t cTableId
Definition atsc_core_atsc1.h:95
uint16_t iDataSize
Definition atsc_core_atsc1.h:97
Definition atsc_core_atsc1.h:38
uint32_t iTsErrInd
Definition atsc_core_atsc1.h:42
uint32_t iAdFieldCtl
Definition atsc_core_atsc1.h:43
uint8_t cSyncByte
Definition atsc_core_atsc1.h:39
uint32_t iContCounter
Definition atsc_core_atsc1.h:47
uint32_t iPidVal
Definition atsc_core_atsc1.h:41
uint32_t iTsPriority
Definition atsc_core_atsc1.h:45
uint32_t iTsScrambCtl
Definition atsc_core_atsc1.h:46
uint32_t iPuStartInd
Definition atsc_core_atsc1.h:44
Definition atsc_core_atsc1.h:115
uint32_t iSectionNum
Definition atsc_core_atsc1.h:125
int32_t iPgmCount
Definition atsc_core_atsc1.h:118
int32_t iSectLen
Definition atsc_core_atsc1.h:117
int32_t iTableId
Definition atsc_core_atsc1.h:116
int32_t iSectSyntaxInd
Definition atsc_core_atsc1.h:120
uint32_t iLastSectionNum
Definition atsc_core_atsc1.h:126
uint32_t iNextInd
Definition atsc_core_atsc1.h:123
uint32_t iTsStreamId
Definition atsc_core_atsc1.h:124
uint64_t lCrcVal
Definition atsc_core_atsc1.h:127
int32_t iPmtCount
Definition atsc_core_atsc1.h:119
uint32_t iVerNum
Definition atsc_core_atsc1.h:122
Definition atsc_core_atsc1.h:106
uint32_t iPID
Definition atsc_core_atsc1.h:108
int32_t iPgmNum
Definition atsc_core_atsc1.h:107