Merge commit '9a03c2323593173a201cb75edd1b49887cf811ed'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 7 Oct 2014 10:49:38 +0000 (12:49 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 7 Oct 2014 11:00:08 +0000 (13:00 +0200)
* commit '9a03c2323593173a201cb75edd1b49887cf811ed':
  h263dec: Force padding bug workaround for H.263.

This is not merged as it breaks a good part of the error concealment/resilience for H.263
Also, messenger.h263 plays fine in ffmpeg.
If anyone has any other h263 files that do not work, please open an issue on trak or
mail me!

See: d225b0f7aaa65eafccc87165130e1c4bab71708b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/h263dec.c

@@@ -325,27 -315,9 +325,28 @@@ static int decode_slice(MpegEncContext 
          }
      }
  
 +    if (s->codec_id == AV_CODEC_ID_H263          &&
 +        (s->workaround_bugs & FF_BUG_AUTODETECT) &&
 +        get_bits_left(&s->gb) >= 8               &&
 +        get_bits_left(&s->gb) < 300              &&
 +        s->pict_type == AV_PICTURE_TYPE_I        &&
 +        show_bits(&s->gb, 8) == 0                &&
 +        !s->data_partitioning) {
 +
 +        s->padding_bug_score += 32;
 +    }
 +
 +    if (s->codec_id == AV_CODEC_ID_H263          &&
 +        (s->workaround_bugs & FF_BUG_AUTODETECT) &&
 +        get_bits_left(&s->gb) >= 64              &&
 +        AV_RB64(s->gb.buffer_end - 8) == 0xCDCDCDCDFC7F0000) {
 +
 +        s->padding_bug_score += 32;
 +    }
 +
      if (s->workaround_bugs & FF_BUG_AUTODETECT) {
-         if (s->padding_bug_score > -2 && !s->data_partitioning)
 -        if (s->codec_id == AV_CODEC_ID_H263 ||
++        if (
+             (s->padding_bug_score > -2 && !s->data_partitioning))
              s->workaround_bugs |= FF_BUG_NO_PADDING;
          else
              s->workaround_bugs &= ~FF_BUG_NO_PADDING;