[FFmpeg-devel] BDAV blu ray muxer format/specs
Petri Hintukainen
phintuka
Wed Jul 7 14:49:43 CEST 2010
Thad Ward wrote:
> While I haven't pulled apart a stream to see the various packets that may be
> in the stream, I do know that, at the base, it is a slightly-modified ISO
> 13818-1 transport stream.
Here are some constraints for .m2ts file:
- divided to aligned units (6144 bytes / 32 packets)
- last unit is padded with null packets, ts pid 0x1fff
- ts pids are fixed:
0x0100 PMT
0x1001 PCR
0x1011 primary video
0x1100- 0x111f primary audio
0x1200- 0x121f PGS
0x1400- 0x141f IGS
0x1800 text subtitles
0x1a00- 0x1a1f secondary audio
0x1b00- 0x1b1f secondary video
- no gaps in PID values are allowed
- PCR must be present, max interval 100ms
- transport scrambling control set to 00
- following tables must be present: PAT, PMT, SIT
- max intervals: PAT 100ms, PMT 100ms, SIT 1 second
Movie application main .m2ts file:
- 1 primary video stream
MPEG2, MPEG4 AVC or SMTPE VC-1
- 0-32 primary audio streams
LPCM, AC-3, DD+, Dolby Lossless, DTS, DTS-HD
- 0-32 primary HDMV PG streams
- 0-32 primary HDMV IG streams
- 0-32 secondary video streams
MPEG2, MPEG4 AVC or SMTPE VC-1
- 0-32 secondary audio streams
DD+, DTS-HD LBR
[Note that additional streams may be muxed to separate .m2ts file]
PAT:
- network PID: 0x001f
- program number: 1 (only one program allowed)
- program map pid: 0x100
PMT:
- program number: 1
- stream types:
video 0x02, 0x1b, 0xea
audio 0x80...0x86, 0xa1..0xa2
graphics 0x90..0x92
- program info shall contain descriptors 0x05 (value "HDMV") and 0x88
- program info may contain descriptor 0x89
- stream info shall contain descriptors 0x05, 0x81, 0x86, 0x28
- stream info may contain descriptor 0x2a
SIT:
- only one service
- running status: 0
- shall contain descriptor 0x63
> The difference is that each ISO-TS packet is
> preceded by a 32-bit timestamp value, signaling when the packet is to be
> delivered to the demuxer.
2 first bits are copy-control bits (see aacs spec).
next 30 bits are timestamp (ATC, arrival time counter, 27 MHz)
> The purpose of the timestamp is to avoid having
> to add padding packets.
and sync reading sub play items (when some substreams are in
separate .m2ts file)
- Petri
More information about the ffmpeg-devel
mailing list