On Sunday 07 August 2011 17:10:04 Laz wrote:
It all works but it's not perfect: it can't decode a number of frames at the start of the stream when vdr starts. I'm now dropping all frames before the first I-frame and it seems a bit happier but still complains about the first few frames (maybe I should look for the first GOP instead? I'm learning all about MPEG formats as I go here! ;-).
I don't think it likes decoding frames when it doesn't know the width and height (and it won't let you force default values before decoding!!). I've yet to work out whereabouts in an MPEG stream the width and height are to be found (I'm scanning the source code of a number of applicaitons in parallel!)
Unfortunately, the documentation for ffmpeg is a bit brief in places and nearly all example code I've seen is for video files with a well-defined beginning rather than a DVB stream that could be opened at any point!
To reply to myself(!) dropping everything before the first sequence header (00 00 01 B3) seems to have sorted out the decoding errors. I was thinking I'd have to drop a lot of packets between the actual pictures but avcodec seems happy to be fed everything after the sequence header.
Next step, implement PlayTsVideo and PlayTsAudio...
Cheers,
Laz