Merge commit 'c34a96a5ddfa390ce2a352eca79190766c9056d4'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 18 Aug 2013 09:50:47 +0000 (11:50 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 18 Aug 2013 10:00:17 +0000 (12:00 +0200)
* commit 'c34a96a5ddfa390ce2a352eca79190766c9056d4':
  dxa: fix decoding of first I-frame by separating I/P-frame decoding

Conflicts:
libavcodec/dxa.c

See: 186e47ef6d7d90bfd8b16e77cfa5e7aeb2a497c0
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/dxa.c

@@@ -263,23 -252,27 +263,31 @@@ static int decode_frame(AVCodecContext 
          }
          break;
      case 2:
-     case 3:
      case 4:
+         frame->key_frame = 1;
+         frame->pict_type = AV_PICTURE_TYPE_I;
+         for (j = 0; j < avctx->height; j++) {
+                 memcpy(outptr, srcptr, avctx->width);
+             outptr += stride;
+             srcptr += avctx->width;
+         }
+         break;
+     case 3:
      case 5:
-         if (!tmpptr && (compr & 1)) {
+         if (!tmpptr) {
              av_log(avctx, AV_LOG_ERROR, "Missing reference frame.\n");
 -            return AVERROR_INVALIDDATA;
 +            if (!(avctx->flags2 & CODEC_FLAG2_SHOW_ALL))
 +                return AVERROR_INVALIDDATA;
          }
-         frame->key_frame = !(compr & 1);
-         frame->pict_type = (compr & 1) ? AV_PICTURE_TYPE_P : AV_PICTURE_TYPE_I;
-         for(j = 0; j < avctx->height; j++){
-             if((compr & 1) && tmpptr){
+         frame->key_frame = 0;
+         frame->pict_type = AV_PICTURE_TYPE_P;
+         for (j = 0; j < avctx->height; j++) {
 -            for (i = 0; i < avctx->width; i++)
 -                outptr[i] = srcptr[i] ^ tmpptr[i];
 -            tmpptr += stride;
++            if(tmpptr){
 +                for(i = 0; i < avctx->width; i++)
 +                    outptr[i] = srcptr[i] ^ tmpptr[i];
 +                tmpptr += stride;
 +            }else
 +                memcpy(outptr, srcptr, avctx->width);
              outptr += stride;
              srcptr += avctx->width;
          }