[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