On Wed, Sep 30, 2015 at 2:29 PM, Hendrik Leppkes <h.lepp...@gmail.com> wrote: > On Wed, Sep 30, 2015 at 2:10 PM, Michael Niedermayer <michae...@gmx.at> wrote: >> On Wed, Sep 30, 2015 at 12:42:59PM +0200, Hendrik Leppkes wrote: >>> The chroma format can be still unset in postinit when a badly cut stream >>> starts with a slice instead of a sequence header. This is a common >>> occurance when feeding avcodec from a Live TV stream. >>> --- >>> libavcodec/mpeg12dec.c | 1 - >>> 1 file changed, 1 deletion(-) >>> >>> diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c >>> index 5d916d1..b3c2c45 100644 >>> --- a/libavcodec/mpeg12dec.c >>> +++ b/libavcodec/mpeg12dec.c >>> @@ -1389,7 +1389,6 @@ static int mpeg_decode_postinit(AVCodecContext *avctx) >>> case 1: avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; >>> break; >>> case 2: >>> case 3: avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; >>> break; >>> - default: av_assert0(0); >>> } >>> } // MPEG-2 >> >> This assert double checks that the context init which uses >> width/height/chroma format is done after the chroma format and w/h has >> been read from the headers >> if this is reached without the headers being read then the code is >> buggy and removing the assert will not fix that bug >> >> also if there is no sequence header how is width/height set ? >> theres a check for width/height before mpeg_decode_postinit is called >> > > The dimensions are set by the caller in the avctx before opening the > codec, which apparently inits the mpeg context as well. > > Feel free to fix it differently, error out or something, but I can > trip an assert with input data, which should never happen.
Just to amend - after the fix it works perfectly fine again. It errors out on a bunch of frames of course later on, but then it fixes itself and decodes the Live TV stream like usual. - Hendrik _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel