On 01/15/08 08:53, Stefan Lucke wrote:
On Tuesday 15 January 2008, Reinhard Nissl wrote:
Hi,
Stefan Lucke schrieb:
is it correct that h264 is written as PES via PlayVideo() ?
For decoding with ffmpeg it would be useful to have a PROGRAM_STREAM_MAP in front of a new video stream.
Basically not a bad idea, but where do you put it in live streaming?
I think it should be transmitted first, after a stream reset. A basic PSM that maps from PES 0x01e0 to h264 could look like: unsigned char psm_map_0xe0_to_h264 [] = { 0x00, 0x00, 0x01, 0xbc, 0x00, 0x10, // psm length 0x00, 0x00, // unknown 0x00, 0x00, // info length // info data here 0x00, 0x04 // map length // map data here 0x1b, 0xe0, 0x00, 0x00 // h264 map entry / NO map info 0x00, 0x00, 0x00, 0x00 // crc32 };
That is inspired by ffmpegs: libavformat/mpeg.c mpegps_psm_parse() line ~220 .
Or after a seek in VDR's recording player?
By above, it's just (pinned) at the beginning of the file. Don't know if we should expect changes in between (but all bad things happen).
Mplayer does some nice tests to determine PES vs. ES. It has just not been extended to detect H.264 in the same way.
Aren't users beeing told to feed mplayer with PSM too ?
H.264 uses a limited start code set compared to MPEG1/2 so it should be easy to detect the content, due to the distribution of start codes.
Why does H.264 have to be such a broken format? MPEG2 can be handled just fine in PES, why can't H.264 be, too? Why can't H.264 video packets be recognized as such all by themselves, just like MPEG2 or MPEG1 packets are?
Klaus