1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
==============================================================================
syntax No.of bits Mnemonic
==============================================================================
transport_packet(){
sync_byte
...
adaptation_field_control 2 bslbf
continuity_counter 4 uimsbf
if
(adaptation_field_control ==
'10'
||
adaptation_field_control ==
'11'
){
adaptation_field()
}
...
}
==============================================================================
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
==============================================================================
syntax No.of bits Mnemonic
==============================================================================
adaptation_field(){
adaptation_field_length 8 uimsbf
if
(adaptation_field_length>0){
...
PCR_flag 1 bslbf
...
if
(PCR_flag ==
'1'
){
program_clock_reference_base 33 uimsbf
Reserved 6 bslbf
program_clock_reference_extension 9 uimsbf
...
}
}
}
==============================================================================
|
t(i): 字节i的编码时间.
03:02:29.012 = ((3 * 60) + 2) * 60 + 29.012 = 10949.012s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
==============================================================================
syntax No.of bits Mnemonic
==============================================================================
PES_packet(){
packet_start_code_prefix 24 bslbf
stream_id 8 uimsbf
PES_packet_length 16 uimsbf
if
(stream_id != program_stream_map
&& stream_id != padding_stream
&& stream_id != private_stream_2
&& stream_id != ECM
&& stream_id != EMM
&& stream_id != program_stream_directory
&& stream_id != DSMCC_stream
&& stream_id != ITU-T REc.H.222.1 type E stream){
'10'
2 bslbf
...
PTS_DTS_flags 2 bslbf
...
if
(PTS_DTS_flags ==
'10'
){
'0010'
4 bslbf
PTS[32..30] 3 bslbf
marker_bit 1 bslbf
PTS[29..15] 15 bslbf
marker_bit 1 bslbf
PTS[14..0] 15 bslbf
marker_bit 1 bslbf
}
if
(PTS_DTS_flag ==
'11'
){
'0011'
PTS[32..30] 3 bslbf
marker_bit 1 bslbf
PTS[29..15] 15 bslbf
marker_bit 1 bslbf
PTS[14..0] 15 bslbf
marker_bit 1 bslbf
'0001'
4 bslbf
DTS[32..30] 3 bslbf
marker_bit 1 bslbf
DTS[29..15] 15 bslbf
marker_bit 1 bslbf
DTS[14..0] 15 bslbf
marker_bit 1 bslbf
}
...
}
...
}
==============================================================================
|
对于转码来说,如ffmpeg等并不是这么做的。
http://hi.baidu.com/wangyq_ok/item/dab1318c6f5391e3e596e0a3