根据流类型判断(流类型是PES包头第四字节),扩展头部有三种。
一种是非 (
0xBC
0XBE
0xBF 0xF0 0xF1 0xF2 0xF8),这类可能又PTS/DTS信息
一种是(0xBC 0xBF 0xF0 0xF1 0xF2 0xF8)其中之一。
一种是 0XBE,也就是padding_stream 。
第一种
if (stream_id != program_stream_map
1011 1100 1 program_stream_map 0xBC
&& stream_id != padding_stream
1011 1110 padding_stream 0XBE
&& stream_id != private_stream_2
1011 1111 3 private_stream_2 0xBF
&& stream_id != ECM
1111 0000 3 ECM_stream 0xF0
&& stream_id != EMM
1111 0001 3 EMM_stream 0xF1
&& stream_id != program_stream_directory
1111 1111 4 program_stream_directory 0xFF
&& stream_id != DSMCC_stream
1111 0010 5 ITU-T H.222.0 建议书 | ISO/IEC 13818-1 附件 A
或 ISO/IEC 13818-6_DSMCC_stream 0xF2
&& stream_id != ITU-T H.222.1 建议书类型 E stream)
1111 1000 6 ITU-T H.222.1 建议书类型 E 0xF8
第二种:
else if ( stream_id == program_stream_map
1011 1100 1 program_stream_map 0xBC
|| stream_id == private_stream_2
1011 1111 3 private_stream_2 0xBF
|| stream_id == ECM
1111 0000 3 ECM_stream 0xF0
|| stream_id == EMM
1111 0001 3 EMM_stream 0xF1
|| stream_id == program_stream_directory
1111 1111 4 program_stream_directory 0xFF
|| stream_id == DSMCC_stream
1111 0010 5 ITU-T H.222.0 建议书 | ISO/IEC 13818-1 附件 A
或 ISO/IEC 13818-6_DSMCC_stream 0xF2
|| stream_id == ITU-T H.222.1 建议书类型 E stream ) {
1111 1000 6 ITU-T H.222.1 建议书类型 E 0xF8
第三种
else if ( stream_id == padding_stream) {
1011 1110 padding_stream 0XBE