]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/utvideo.c
cavsdec: check dimensions being valid.
[ffmpeg] / libavcodec / utvideo.c
index d8699c6b7a44271625424a589ba755b73cbe1bec..6d56f0575c048782c417b2d746dc7dffdac5064c 100644 (file)
@@ -437,10 +437,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
                                plane_start[i], c->frame_pred == PRED_LEFT);
             if (ret)
                 return ret;
-            if (c->frame_pred == PRED_MEDIAN)
-                restore_median(c->pic.data[0] + rgb_order[i], c->planes,
-                               c->pic.linesize[0], avctx->width, avctx->height,
-                               c->slices, 0);
+            if (c->frame_pred == PRED_MEDIAN) {
+                if (!c->interlaced) {
+                    restore_median(c->pic.data[0] + rgb_order[i], c->planes,
+                                   c->pic.linesize[0], avctx->width,
+                                   avctx->height, c->slices, 0);
+                } else {
+                    restore_median_il(c->pic.data[0] + rgb_order[i], c->planes,
+                                      c->pic.linesize[0], avctx->width,
+                                      avctx->height, c->slices, 0);
+                }
+            }
         }
         restore_rgb_planes(c->pic.data[0], c->planes, c->pic.linesize[0],
                            avctx->width, avctx->height);
@@ -490,6 +497,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
 
     c->pic.key_frame = 1;
     c->pic.pict_type = AV_PICTURE_TYPE_I;
+    c->pic.interlaced_frame = !!c->interlaced;
+
     *data_size = sizeof(AVFrame);
     *(AVFrame*)data = c->pic;
 
@@ -570,7 +579,7 @@ static av_cold int decode_end(AVCodecContext *avctx)
 AVCodec ff_utvideo_decoder = {
     .name           = "utvideo",
     .type           = AVMEDIA_TYPE_VIDEO,
-    .id             = CODEC_ID_UTVIDEO,
+    .id             = AV_CODEC_ID_UTVIDEO,
     .priv_data_size = sizeof(UtvideoContext),
     .init           = decode_init,
     .close          = decode_end,