in src/brpc/ts.cpp [628:679]
size_t TsPayloadPES::ByteSize() const {
size_t sz = 0;
_PES_header_data_length = 0;
const TsPESStreamId sid = stream_id;
if (sid != TS_PES_STREAM_ID_PROGRAM_STREAM_MAP
&& sid != TS_PES_STREAM_ID_PADDING_STREAM
&& sid != TS_PES_STREAM_ID_PRIVATE_STREAM2
&& sid != TS_PES_STREAM_ID_ECM_STREAM
&& sid != TS_PES_STREAM_ID_EMM_STREAM
&& sid != TS_PES_STREAM_ID_PROGRAM_STREAM_DIRECTORY
&& sid != TS_PES_STREAM_ID_DSMC_STREAM
&& sid != TS_PES_STREAM_ID_H2221TYPE_E) {
sz += 6;
sz += 3;
const size_t old_sz = sz;
if (PTS_DTS_flags == 0x2) { sz += 5; }
else if (PTS_DTS_flags == 0x3) { sz += 10; }
if (ESCR_flag) { sz += 6; }
if (ES_rate_flag) { sz += 3; }
if (DSM_trick_mode_flag) { sz += 1; }
if (additional_copy_info_flag) { sz += 1; }
if (PES_CRC_flag) { sz += 2; }
if (PES_extension_flag) {
sz += 1;
if (PES_private_data_flag) { sz += 16; }
if (pack_header_field_flag) { sz += 1 + pack_field_length; }
if (program_packet_sequence_counter_flag) { sz += 2; }
if (P_STD_buffer_flag) { sz += 2; }
if (PES_extension_flag_2) { sz += 1 + PES_extension_field_length; }
}
_PES_header_data_length = sz - old_sz;
sz += nb_stuffings;
// packet bytes
} else if (sid == TS_PES_STREAM_ID_PROGRAM_STREAM_MAP
|| sid == TS_PES_STREAM_ID_PRIVATE_STREAM2
|| sid == TS_PES_STREAM_ID_ECM_STREAM
|| sid == TS_PES_STREAM_ID_EMM_STREAM
|| sid == TS_PES_STREAM_ID_PROGRAM_STREAM_DIRECTORY
|| sid == TS_PES_STREAM_ID_DSMC_STREAM
|| sid == TS_PES_STREAM_ID_H2221TYPE_E
) {
// packet bytes
} else {
// nb_drop
}
return sz;
}