1. PES 패킷 헤더 구조
2. PES 패킷 헤더의 기본 필드
ㅇ packet_start_code_prefix (24 비트)
- `0000 0000 0000 0000 0000 0001 (0x 00 00 01)`
. 바이트 단위 정렬 : 23개 비트 `0`과 마지막 비트 `1`로써 구성됨
ㅇ stream_id (8 비트)
- PES 패킷 유료부하에 포함된 ES(Elementary Stream) 타입 및 번호를 나타냄
. `1011 1100 (0x BC)` : Program Stream Map
. `1011 1101 (0x BD)` : Private stream 1 (non MPEG audio, subpictures)
.. PES 헤더에 선택 확장 필드 있음
. `1011 1110 (0x BE)` : Padding stream
.. 수납된 스트림이 정보 없이 단순히 덧붙이기 임
.. PES 헤더에 선택 확장 필드 없음
. `1011 1111 (0x BF)` : Private stream 2 (navigation data)
.. PES 헤더에 선택 확장 필드 없음
. `110x xxxx (Ox C0 ~ DF)` : Audio Stream
.. PES 헤더에 선택 확장 필드 있음
.. 뒤의 `x`는 다중화되는 여러 오디오 ES들의 일련번호로써 사용됨
. `1110 xxxx (Ox E0 ~ EF)` : Video Stream
.. PES 헤더에 선택 확장 필드 있음
.. 뒤의 `x`는 다중화되는 여러 비디오 ES들의 일련번호로써 사용됨
. (...) 등
- PSI(프로그램사양정보)에 정의되는 값(PMT의 stream_type)과 일관성이 있어야 함
ㅇ PES_packet_length (16 비트)
- 이 필드 바로 다음부터 PES 패킷 끝까지의 길이 바이트 수
. `0`이면, 비디오 ES 이고 그 길이가 제한없음을 뜻함
.. PES 패킷 길이는 비디오 제외하고는 최대 64 kbytes(65,536 바이트) 이하
* 한편, packet start code 라고 하면, (packet_start_code_prefix + stream_id)를 말함
3. PES 패킷 헤더의 선택 필드 (optional PES Header)
ㅇ PES_scrambling_control (2 비트)
- 유료부하 내 데이터의 스크램블링 모드를 결정함
. 00 : not scrambled, 그 이외 값 : user defined
ㅇ PES_priority (1 비트)
- PES 패킷 유료부하의 우선순위를 나타냄 (`1`은 우선순위 높음)
ㅇ (기타 선택 필드들)
- 타이밍 시간 정보 : ESCR(Elementary Stream Clock Reference),
PTS(Presentation Time Stamp), DTS(Decoding Time Stamp)
- 우선순위 플래그 : 패킷의 중요도를 표기
- 암호화 제어 플래그
- 트릭모드 재생 정보 : 빠른 재생 등 비디오 재생 관련
- 저작권 등