]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dxa.c
ff_emulated_edge_mc: fix handling of w/h being 0
[ffmpeg] / libavcodec / dxa.c
index 13b63df926dce31b9dee5ef84fe286dad7e4cb09..cf8ce0c46f1d4e284977069a5881c40699481ff5 100644 (file)
@@ -256,7 +256,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
         c->pic.key_frame = !(compr & 1);
         c->pic.pict_type = (compr & 1) ? AV_PICTURE_TYPE_P : AV_PICTURE_TYPE_I;
         for(j = 0; j < avctx->height; j++){
-            if(compr & 1){
+            if((compr & 1) && tmpptr){
                 for(i = 0; i < avctx->width; i++)
                     outptr[i] = srcptr[i] ^ tmpptr[i];
                 tmpptr += stride;
@@ -270,6 +270,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
     case 13:
         c->pic.key_frame = 0;
         c->pic.pict_type = AV_PICTURE_TYPE_P;
+        if (!c->prev.data[0]) {
+            av_log(avctx, AV_LOG_ERROR, "Missing reference frame\n");
+            return AVERROR_INVALIDDATA;
+        }
         decode_13(avctx, c, c->pic.data[0], srcptr, c->prev.data[0]);
         break;
     default: