[MPlayer-users] VDPAU decoding in MPlayer broken by recent FFmpeg changes

Reimar Döffinger Reimar.Doeffinger at gmx.de
Tue Aug 13 22:02:00 CEST 2013


On Sun, Aug 11, 2013 at 08:06:14PM +0200, Ilja Sekler wrote:
> Am 11.08.2013 13:38, schrieb Reimar Döffinger:
> 
> >On Sat, Aug 10, 2013 at 03:42:38PM +0200, Ilja Sekler wrote:
> >
> >>With ffodivxvdpau though, I get quite
> >>frequently (but not every frame) a line like
> >>
> >>[mpeg4 @ 0x7f1f55f31d00]marker does not match f_code
> >>
> >>from libavcodec/mpeg4videodec.c:376 printed in the console when
> >>playing most of my few DivX and Xvid encoded videos, which doesn't
> >>happen with MPlayer from 2013-08-06 12:00 and -vo ffodivxvdpau and
> >>also doesn't happen with the current patched MPlayer/FFmpeg and the
> >>software decoder. I can suppress this only with -msglevel
> >>decvideo=0.
> >
> >This sounds like a bug, though I don't understand why it didn't happen
> >before. At least not fully.
> >Could you try below change?
> >--- a/libavcodec/ituh263dec.c
> >+++ b/libavcodec/ituh263dec.c
> >@@ -234,6 +234,8 @@ int ff_h263_resync(MpegEncContext *s){
> >          skip_bits1(&s->gb);
> >          align_get_bits(&s->gb);
> >      }
> >+    if (get_bits_left(&s->gb) < 16)
> >+        return -1;
> >
> >      if(show_bits(&s->gb, 16)==0){
> >          pos= get_bits_count(&s->gb);
> 
> Yes, this patch works, no more "marker does not match f_code" spam
> in the console numerous times per second, thank you. Verified by a
> comparison with a MPlayer build without it.

It was pointed out to me that this breaks error concealment for software
decoding.
Could you remove above previous attempt and test if the following also fixes it?
--- a/libavcodec/ituh263dec.c
+++ b/libavcodec/ituh263dec.c
@@ -235,7 +235,7 @@ int ff_h263_resync(MpegEncContext *s){
         align_get_bits(&s->gb);
     }
 
-    if(show_bits(&s->gb, 16)==0){
+    if(get_bits_left(&s->gb) >= 16 && show_bits(&s->gb, 16)==0){
         pos= get_bits_count(&s->gb);
         if(CONFIG_MPEG4_DECODER && s->codec_id==AV_CODEC_ID_MPEG4)
             ret= ff_mpeg4_decode_video_packet_header(s);



More information about the MPlayer-users mailing list