mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
update the ts_info, parse the PES packet
This commit is contained in:
parent
b2fe7fb8a1
commit
6d4e4d3da2
1 changed files with 312 additions and 75 deletions
|
@ -440,15 +440,51 @@ public:
|
||||||
// 1B
|
// 1B
|
||||||
u_int8_t PES_header_data_length; //8bits
|
u_int8_t PES_header_data_length; //8bits
|
||||||
|
|
||||||
/**
|
|
||||||
* logic data.
|
|
||||||
*/
|
|
||||||
// generated by PTS_DTS_flags
|
|
||||||
int64_t pts; // 33bits
|
int64_t pts; // 33bits
|
||||||
int64_t dts; // 33bits
|
int64_t dts; // 33bits
|
||||||
|
|
||||||
|
int16_t ESCR_extension; //9bits
|
||||||
|
int64_t ESCR_base; //33bits
|
||||||
|
int32_t ES_rate; //22bits
|
||||||
|
|
||||||
|
int8_t trick_mode_control; //3bits
|
||||||
|
int8_t trick_mode_value; //5bits
|
||||||
|
|
||||||
|
int8_t additional_copy_info; //7bits
|
||||||
|
int16_t previous_PES_packet_CRC; //16bits
|
||||||
|
|
||||||
|
int8_t PES_private_data_flag; //1bit
|
||||||
|
int8_t pack_header_field_flag; //1bit
|
||||||
|
int8_t program_packet_sequence_counter_flag; //1bit
|
||||||
|
int8_t P_STD_buffer_flag; //1bit
|
||||||
|
// reserved 3bits
|
||||||
|
int8_t PES_extension_flag_2; //1bit
|
||||||
|
|
||||||
|
// 16B
|
||||||
|
char* PES_private_data; //128bits
|
||||||
|
|
||||||
|
int8_t pack_field_length; //8bits
|
||||||
|
char* pack_field; //[pack_field_length] bytes
|
||||||
|
|
||||||
|
int8_t program_packet_sequence_counter; //7bits
|
||||||
|
int8_t MPEG1_MPEG2_identifier; //1bit
|
||||||
|
int8_t original_stuff_length; //6bits
|
||||||
|
|
||||||
|
int8_t P_STD_buffer_scale; //1bit
|
||||||
|
int16_t P_STD_buffer_size; //13bits
|
||||||
|
|
||||||
|
int8_t PES_extension_field_length; //7bits
|
||||||
|
char* PES_extension_field; //[PES_extension_field_length] bytes
|
||||||
|
|
||||||
|
int stuffing_size;
|
||||||
|
char* stuffing_byte;
|
||||||
|
|
||||||
|
char* PES_packet_data_byte; //[PES_packet_length] bytes
|
||||||
|
|
||||||
TSPayloadPES();
|
TSPayloadPES();
|
||||||
virtual ~TSPayloadPES();
|
virtual ~TSPayloadPES();
|
||||||
|
int64_t decode_33bits_int(u_int8_t*& p, int64_t& temp);
|
||||||
|
int64_t decode_33bits_int(int64_t& temp);
|
||||||
int demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t* last, u_int8_t*& p);
|
int demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t* last, u_int8_t*& p);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -537,10 +573,38 @@ void TSContext::push(TSPidType type, int16_t pid)
|
||||||
|
|
||||||
TSAdaptionField::TSAdaptionField()
|
TSAdaptionField::TSAdaptionField()
|
||||||
{
|
{
|
||||||
|
adaption_field_length = 0;
|
||||||
|
discontinuity_indicator = 0;
|
||||||
|
random_access_indicator = 0;
|
||||||
|
elementary_stream_priority_indicator = 0;
|
||||||
|
PCR_flag = 0;
|
||||||
|
OPCR_flag = 0;
|
||||||
|
splicing_point_flag = 0;
|
||||||
|
transport_private_data_flag = 0;
|
||||||
|
adaptation_field_extension_flag = 0;
|
||||||
|
program_clock_reference_base = 0;
|
||||||
|
program_clock_reference_extension = 0;
|
||||||
|
original_program_clock_reference_base = 0;
|
||||||
|
original_program_clock_reference_extension = 0;
|
||||||
|
splice_countdown = 0;
|
||||||
|
transport_private_data_length = 0;
|
||||||
transport_private_data = NULL;
|
transport_private_data = NULL;
|
||||||
|
adaptation_field_extension_length = 0;
|
||||||
|
ltw_flag = 0;
|
||||||
|
piecewise_rate_flag = 0;
|
||||||
|
seamless_splice_flag = 0;
|
||||||
|
ltw_valid_flag = 0;
|
||||||
|
ltw_offset = 0;
|
||||||
|
piecewise_rate = 0;
|
||||||
|
splice_type = 0;
|
||||||
|
DTS_next_AU0 = 0;
|
||||||
|
marker_bit0 = 0;
|
||||||
|
DTS_next_AU1 = 0;
|
||||||
|
marker_bit1 = 0;
|
||||||
|
DTS_next_AU2 = 0;
|
||||||
|
marker_bit2 = 0;
|
||||||
af_ext_reserved = NULL;
|
af_ext_reserved = NULL;
|
||||||
af_reserved = NULL;
|
af_reserved = NULL;
|
||||||
|
|
||||||
__user_size = 0;
|
__user_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -719,7 +783,18 @@ int TSPayloadReserved::demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_i
|
||||||
|
|
||||||
TSPayloadPAT::TSPayloadPAT()
|
TSPayloadPAT::TSPayloadPAT()
|
||||||
{
|
{
|
||||||
|
table_id = 0;
|
||||||
|
section_syntax_indicator = 0;
|
||||||
|
const0_value = 0;
|
||||||
|
section_length = 0;
|
||||||
|
transport_stream_id = 0;
|
||||||
|
version_number = 0;
|
||||||
|
current_next_indicator = 0;
|
||||||
|
section_number = 0;
|
||||||
|
last_section_number = 0;
|
||||||
|
program_size = 0;
|
||||||
programs = NULL;
|
programs = NULL;
|
||||||
|
CRC_32 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TSPayloadPAT::~TSPayloadPAT()
|
TSPayloadPAT::~TSPayloadPAT()
|
||||||
|
@ -781,7 +856,9 @@ int TSPayloadPAT::demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t
|
||||||
|
|
||||||
TSPMTESInfo::TSPMTESInfo()
|
TSPMTESInfo::TSPMTESInfo()
|
||||||
{
|
{
|
||||||
ES_info_length = 0;
|
stream_type = 0;
|
||||||
|
elementary_PID = 0;
|
||||||
|
ES_info_length = 0;
|
||||||
ES_info = NULL;
|
ES_info = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -792,8 +869,19 @@ TSPMTESInfo::~TSPMTESInfo()
|
||||||
|
|
||||||
TSPayloadPMT::TSPayloadPMT()
|
TSPayloadPMT::TSPayloadPMT()
|
||||||
{
|
{
|
||||||
program_info_length = 0;
|
table_id = 0;
|
||||||
program_info_desc = NULL;
|
section_syntax_indicator = 0;
|
||||||
|
const0_value = 0;
|
||||||
|
section_length = 0;
|
||||||
|
program_number = 0;
|
||||||
|
version_number = 0;
|
||||||
|
current_next_indicator = 0;
|
||||||
|
section_number = 0;
|
||||||
|
last_section_number = 0;
|
||||||
|
PCR_PID = 0;
|
||||||
|
program_info_length = 0;
|
||||||
|
program_info_desc = NULL;
|
||||||
|
CRC_32 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TSPayloadPMT::~TSPayloadPMT()
|
TSPayloadPMT::~TSPayloadPMT()
|
||||||
|
@ -904,11 +992,92 @@ int TSPayloadPMT::demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t
|
||||||
|
|
||||||
TSPayloadPES::TSPayloadPES()
|
TSPayloadPES::TSPayloadPES()
|
||||||
{
|
{
|
||||||
pts = dts = 0;
|
packet_start_code_prefix = 0;
|
||||||
|
stream_id = 0;
|
||||||
|
PES_packet_length = 0;
|
||||||
|
PES_scrambling_control = 0;
|
||||||
|
PES_priority = 0;
|
||||||
|
data_alignment_indicator = 0;
|
||||||
|
copyright = 0;
|
||||||
|
original_or_copy = 0;
|
||||||
|
PTS_DTS_flags = 0;
|
||||||
|
ESCR_flag = 0;
|
||||||
|
ES_rate_flag = 0;
|
||||||
|
DSM_trick_mode_flag = 0;
|
||||||
|
additional_copy_info_flag = 0;
|
||||||
|
PES_CRC_flag = 0;
|
||||||
|
PES_extension_flag = 0;
|
||||||
|
PES_header_data_length = 0;
|
||||||
|
pts = 0;
|
||||||
|
dts = 0;
|
||||||
|
ESCR_extension = 0;
|
||||||
|
ESCR_base = 0;
|
||||||
|
ES_rate = 0;
|
||||||
|
trick_mode_control = 0;
|
||||||
|
trick_mode_value = 0;
|
||||||
|
additional_copy_info = 0;
|
||||||
|
previous_PES_packet_CRC = 0;
|
||||||
|
PES_private_data_flag = 0;
|
||||||
|
pack_header_field_flag = 0;
|
||||||
|
program_packet_sequence_counter_flag = 0;
|
||||||
|
P_STD_buffer_flag = 0;
|
||||||
|
PES_extension_flag_2 = 0;
|
||||||
|
PES_private_data = NULL;
|
||||||
|
pack_field_length = 0;
|
||||||
|
pack_field = NULL;
|
||||||
|
program_packet_sequence_counter = 0;
|
||||||
|
MPEG1_MPEG2_identifier = 0;
|
||||||
|
original_stuff_length = 0;
|
||||||
|
P_STD_buffer_scale = 0;
|
||||||
|
P_STD_buffer_size = 0;
|
||||||
|
PES_extension_field_length = 0;
|
||||||
|
PES_extension_field = NULL;
|
||||||
|
stuffing_size = 0;
|
||||||
|
stuffing_byte = NULL;
|
||||||
|
PES_packet_data_byte = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
TSPayloadPES::~TSPayloadPES()
|
TSPayloadPES::~TSPayloadPES()
|
||||||
{
|
{
|
||||||
|
srs_freepa(PES_private_data);
|
||||||
|
srs_freepa(pack_field);
|
||||||
|
srs_freepa(PES_extension_field);
|
||||||
|
srs_freepa(stuffing_byte);
|
||||||
|
srs_freepa(PES_packet_data_byte);
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t TSPayloadPES::decode_33bits_int(u_int8_t*& p, int64_t& temp)
|
||||||
|
{
|
||||||
|
char* pp = (char*)&temp;
|
||||||
|
pp[4] = *p++;
|
||||||
|
pp[3] = *p++;
|
||||||
|
pp[2] = *p++;
|
||||||
|
pp[1] = *p++;
|
||||||
|
pp[0] = *p++;
|
||||||
|
|
||||||
|
return decode_33bits_int(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t TSPayloadPES::decode_33bits_int(int64_t& temp)
|
||||||
|
{
|
||||||
|
int64_t ret = 0;
|
||||||
|
|
||||||
|
// marker_bit 1bit
|
||||||
|
temp = temp >> 1;
|
||||||
|
// PTS [14..0] 15bits
|
||||||
|
ret |= temp & 0x3fff;
|
||||||
|
// marker_bit 1bit
|
||||||
|
temp = temp >> 1;
|
||||||
|
// PTS [29..15] 15bits, 15zero, 29-15+1one
|
||||||
|
ret |= temp & 0x3fff8000;
|
||||||
|
// marker_bit 1bit
|
||||||
|
temp = temp >> 1;
|
||||||
|
// PTS [32..30] 3bits
|
||||||
|
ret |= temp & 0x1c0000000;
|
||||||
|
|
||||||
|
temp = temp >> 33;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TSPayloadPES::demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t* last, u_int8_t*& p)
|
int TSPayloadPES::demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t* last, u_int8_t*& p)
|
||||||
|
@ -957,82 +1126,141 @@ int TSPayloadPES::demux(TSContext* ctx, TSPacket* pkt, u_int8_t* start, u_int8_t
|
||||||
PES_extension_flag &= 0x01;
|
PES_extension_flag &= 0x01;
|
||||||
|
|
||||||
PES_header_data_length = *p++;
|
PES_header_data_length = *p++;
|
||||||
|
u_int8_t* pos = p;
|
||||||
|
|
||||||
|
int64_t temp = 0;
|
||||||
if (PTS_DTS_flags == 0x2) {
|
if (PTS_DTS_flags == 0x2) {
|
||||||
int64_t temp = 0;
|
pts = decode_33bits_int(p, temp);
|
||||||
pp = (char*)&temp;
|
|
||||||
pp[4] = *p++;
|
|
||||||
pp[3] = *p++;
|
|
||||||
pp[2] = *p++;
|
|
||||||
pp[1] = *p++;
|
|
||||||
pp[0] = *p++;
|
|
||||||
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [14..0] 15bits
|
|
||||||
pts |= temp & 0x3FFF;
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [29..15] 15bits
|
|
||||||
pts |= temp & 0x3fff8000;
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [32..30] 3bits
|
|
||||||
pts |= temp & 0x1c0000000;
|
|
||||||
// '0010' 4bits
|
// '0010' 4bits
|
||||||
//int8_t const4bits = (temp >> 32) & 0x0F;
|
//int8_t const4bits = temp & 0x0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PTS_DTS_flags == 0x3) {
|
if (PTS_DTS_flags == 0x3) {
|
||||||
int64_t temp = 0;
|
pts = decode_33bits_int(p, temp);
|
||||||
|
// '0011' 4bits
|
||||||
pp = (char*)&temp;
|
//int8_t const4bits = temp & 0x0F;
|
||||||
pp[4] = *p++;
|
|
||||||
pp[3] = *p++;
|
|
||||||
pp[2] = *p++;
|
|
||||||
pp[1] = *p++;
|
|
||||||
pp[0] = *p++;
|
|
||||||
|
|
||||||
// marker_bit 1bit
|
dts = decode_33bits_int(p, temp);
|
||||||
temp = temp >> 1;
|
// '0001' 4bits
|
||||||
// PTS [14..0] 15bits
|
//int8_t const4bits = temp & 0x0F;
|
||||||
pts |= temp & 0x3FFF;
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [29..15] 15bits
|
|
||||||
pts |= temp & 0x3fff8000;
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [32..30] 3bits
|
|
||||||
pts |= temp & 0x1c0000000;
|
|
||||||
// '0010' 4bits
|
|
||||||
//int8_t const4bits = (temp >> 32) & 0x0F;
|
|
||||||
|
|
||||||
pp = (char*)&temp;
|
|
||||||
pp[4] = *p++;
|
|
||||||
pp[3] = *p++;
|
|
||||||
pp[2] = *p++;
|
|
||||||
pp[1] = *p++;
|
|
||||||
pp[0] = *p++;
|
|
||||||
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [14..0] 15bits
|
|
||||||
dts |= temp & 0x3FFF;
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [29..15] 15bits
|
|
||||||
dts |= temp & 0x3fff8000;
|
|
||||||
// marker_bit 1bit
|
|
||||||
temp = temp >> 1;
|
|
||||||
// PTS [32..30] 3bits
|
|
||||||
dts |= temp & 0x1c0000000;
|
|
||||||
// '0010' 4bits
|
|
||||||
//int8_t const4bits = (temp >> 32) & 0x0F;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ESCR_flag) {
|
if (ESCR_flag) {
|
||||||
|
pp = (char*)&temp;
|
||||||
|
pp[5] = *p++;
|
||||||
|
pp[4] = *p++;
|
||||||
|
pp[3] = *p++;
|
||||||
|
pp[2] = *p++;
|
||||||
|
pp[1] = *p++;
|
||||||
|
pp[0] = *p++;
|
||||||
|
|
||||||
|
// marker_bit 1bit
|
||||||
|
temp = temp >> 1;
|
||||||
|
// ESCR_extension 9bits
|
||||||
|
ESCR_extension = temp & 0x1f;
|
||||||
|
temp = temp >> 9;
|
||||||
|
|
||||||
|
ESCR_base = decode_33bits_int(temp);
|
||||||
|
|
||||||
|
// reserved 2bits
|
||||||
|
//int8_t reserved2bits = temp & 0x03;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ES_rate_flag) {
|
||||||
|
pp = (char*)&ES_rate;
|
||||||
|
pp[2] = *p++;
|
||||||
|
pp[1] = *p++;
|
||||||
|
pp[0] = *p++;
|
||||||
|
|
||||||
|
ES_rate = ES_rate >> 1;
|
||||||
|
ES_rate &= 0x3FFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSM_trick_mode_flag) {
|
||||||
|
trick_mode_control = *p++;
|
||||||
|
|
||||||
|
trick_mode_value = trick_mode_control & 0x1f;
|
||||||
|
trick_mode_control = (trick_mode_control >> 5) & 0x03;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (additional_copy_info_flag) {
|
||||||
|
additional_copy_info = *p++;
|
||||||
|
additional_copy_info &= 0x7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PES_CRC_flag) {
|
||||||
|
pp = (char*)&previous_PES_packet_CRC;
|
||||||
|
pp[1] = *p++;
|
||||||
|
pp[0] = *p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PES_extension_flag) {
|
||||||
|
PES_extension_flag_2 = *p++;
|
||||||
|
|
||||||
|
PES_private_data_flag = (PES_extension_flag_2 >> 7) & 0x01;
|
||||||
|
pack_header_field_flag = (PES_extension_flag_2 >> 6) & 0x01;
|
||||||
|
program_packet_sequence_counter_flag = (PES_extension_flag_2 >> 5) & 0x01;
|
||||||
|
P_STD_buffer_flag = (PES_extension_flag_2 >> 4) & 0x01;
|
||||||
|
PES_extension_flag_2 &= PES_extension_flag_2 & 0x01;
|
||||||
|
|
||||||
|
if (PES_private_data_flag) {
|
||||||
|
PES_private_data = new char[16];
|
||||||
|
memcpy(PES_private_data, p, 16);
|
||||||
|
p += 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pack_header_field_flag) {
|
||||||
|
pack_field_length = *p++;
|
||||||
|
if (pack_field_length > 0) {
|
||||||
|
pack_field = new char[pack_field_length];
|
||||||
|
memcpy(pack_field, p, pack_field_length);
|
||||||
|
p += pack_field_length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (program_packet_sequence_counter_flag) {
|
||||||
|
program_packet_sequence_counter = *p++;
|
||||||
|
program_packet_sequence_counter &= 0x7f;
|
||||||
|
|
||||||
|
original_stuff_length = *p++;
|
||||||
|
MPEG1_MPEG2_identifier = (original_stuff_length >> 6) & 0x01;
|
||||||
|
original_stuff_length &= 0x3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (P_STD_buffer_flag) {
|
||||||
|
pp = (char*)&P_STD_buffer_size;
|
||||||
|
pp[1] = *p++;
|
||||||
|
pp[0] = *p++;
|
||||||
|
|
||||||
|
// '01'
|
||||||
|
//int8_t const2bits = (P_STD_buffer_scale >>14) & 0x03;
|
||||||
|
|
||||||
|
P_STD_buffer_scale = (P_STD_buffer_scale >>13) & 0x01;
|
||||||
|
P_STD_buffer_size &= 0x1FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PES_extension_flag_2) {
|
||||||
|
PES_extension_field_length = *p++;
|
||||||
|
PES_extension_field_length &= 0x07;
|
||||||
|
|
||||||
|
if (PES_extension_field_length > 0) {
|
||||||
|
PES_extension_field = new char[PES_extension_field_length];
|
||||||
|
memcpy(PES_extension_field, p, PES_extension_field_length);
|
||||||
|
p += PES_extension_field_length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// stuffing_byte
|
||||||
|
int stuffing_size = PES_header_data_length - (p - pos);
|
||||||
|
if (stuffing_size > 0) {
|
||||||
|
stuffing_byte = new char[stuffing_size];
|
||||||
|
memcpy(stuffing_byte, p, stuffing_size);
|
||||||
|
p += stuffing_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PES_packet_data_byte
|
||||||
|
PES_packet_data_byte = new char[PES_packet_length];
|
||||||
} else if (stream_id == PES_program_stream_map
|
} else if (stream_id == PES_program_stream_map
|
||||||
|| stream_id == PES_private_stream_2
|
|| stream_id == PES_private_stream_2
|
||||||
|| stream_id == PES_ECM_stream
|
|| stream_id == PES_ECM_stream
|
||||||
|
@ -1064,12 +1292,13 @@ TSPayload::TSPayload()
|
||||||
{
|
{
|
||||||
size = 0;
|
size = 0;
|
||||||
pointer_field_size = 0;
|
pointer_field_size = 0;
|
||||||
|
|
||||||
type = TSPidTypeReserved;
|
type = TSPidTypeReserved;
|
||||||
|
pointer_field = 0;
|
||||||
reserved = NULL;
|
reserved = NULL;
|
||||||
pat = NULL;
|
pat = NULL;
|
||||||
pmt = NULL;
|
pmt = NULL;
|
||||||
pes = NULL;
|
pes = NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TSPayload::~TSPayload()
|
TSPayload::~TSPayload()
|
||||||
|
@ -1179,6 +1408,14 @@ int TSPacket::finish()
|
||||||
|
|
||||||
TSHeader::TSHeader()
|
TSHeader::TSHeader()
|
||||||
{
|
{
|
||||||
|
sync_byte = 0;
|
||||||
|
transport_error_indicator = 0;
|
||||||
|
payload_unit_start_indicator = 0;
|
||||||
|
transport_priority = 0;
|
||||||
|
pid = 0;
|
||||||
|
transport_scrambling_control = 0;
|
||||||
|
adaption_field_control = 0;
|
||||||
|
continuity_counter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TSHeader::~TSHeader()
|
TSHeader::~TSHeader()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue