]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/zerocodec.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavcodec / zerocodec.c
index 3bf1fd93f46e37846b52bfa374b7ef8738a84a06..02e37bc0e7f0351a3231973bab774f30b531cfb7 100644 (file)
@@ -50,8 +50,8 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
         return AVERROR(EINVAL);
     }
 
-    zstream->next_in  = avpkt->data;
-    zstream->avail_in = avpkt->size;
+    zstream->next_in   = avpkt->data;
+    zstream->avail_in  = avpkt->size;
 
     prev = prev_pic->data[0];
     dst  = pic->data[0];
@@ -62,49 +62,29 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
      */
 
     if (avpkt->flags & AV_PKT_FLAG_KEY) {
-
         pic->key_frame = 1;
         pic->pict_type = AV_PICTURE_TYPE_I;
-
-        for (i = 0; i < avctx->height; i++) {
-
-            zstream->next_out  = dst;
-            zstream->avail_out = avctx->width << 1;
-
-            zret = inflate(zstream, Z_SYNC_FLUSH);
-
-            if (zret != Z_OK && zret != Z_STREAM_END) {
-                av_log(avctx, AV_LOG_ERROR,
-                       "Inflate failed with return code: %d\n", zret);
-                return AVERROR(EINVAL);
-            }
-
-            dst += pic->linesize[0];
-        }
     } else {
-
         pic->key_frame = 0;
         pic->pict_type = AV_PICTURE_TYPE_P;
+    }
 
-        for (i = 0; i < avctx->height; i++) {
-
-            zstream->next_out  = dst;
-            zstream->avail_out = avctx->width << 1;
-
-            zret = inflate(zstream, Z_SYNC_FLUSH);
-
-            if (zret != Z_OK && zret != Z_STREAM_END) {
-                av_log(avctx, AV_LOG_ERROR,
-                       "Inflate failed with return code: %d\n", zret);
-                return AVERROR(EINVAL);
-            }
+    for (i = 0; i < avctx->height; i++) {
+        zstream->next_out  = dst;
+        zstream->avail_out = avctx->width << 1;
+        zret = inflate(zstream, Z_SYNC_FLUSH);
+        if (zret != Z_OK && zret != Z_STREAM_END) {
+            av_log(avctx, AV_LOG_ERROR,
+                   "Inflate failed with return code: %d\n", zret);
+            return AVERROR(EINVAL);
+        }
 
+        if (!(avpkt->flags & AV_PKT_FLAG_KEY))
             for (j = 0; j < avctx->width << 1; j++)
                 dst[j] += prev[j] & -!dst[j];
 
-            prev += prev_pic->linesize[0];
-            dst  += pic->linesize[0];
-        }
+        prev += prev_pic->linesize[0];
+        dst  += pic->linesize[0];
     }
 
     /* Release the previous buffer if need be */
@@ -114,7 +94,7 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
     /* Store the previouse frame for use later */
     *prev_pic = *pic;
 
-    *data_size       = sizeof(AVFrame);
+    *data_size = sizeof(AVFrame);
     *(AVFrame *)data = *pic;
 
     return avpkt->size;