]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/rv30: fix switching back to the original resolution
authorMichael Niedermayer <michael@niedermayer.cc>
Sun, 16 Aug 2015 23:50:20 +0000 (01:50 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 17 Aug 2015 00:07:34 +0000 (02:07 +0200)
Fixes part of Ticket1388

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/rv30.c
libavcodec/rv34.h

index f8c7ed4608ee876b5b1821f57b3ad1b76e87bddf..3b9868cd5ec62f59e93f6973f37567b086aab600 100644 (file)
@@ -67,6 +67,9 @@ static int rv30_parse_slice_header(RV34DecContext *r, GetBitContext *gb, SliceIn
 
         w = r->s.avctx->extradata[6 + rpr*2] << 2;
         h = r->s.avctx->extradata[7 + rpr*2] << 2;
+    } else {
+        w = r->orig_width;
+        h = r->orig_height;
     }
     si->width  = w;
     si->height = h;
@@ -259,6 +262,9 @@ static av_cold int rv30_decode_init(AVCodecContext *avctx)
     RV34DecContext *r = avctx->priv_data;
     int ret;
 
+    r->orig_width  = avctx->coded_width;
+    r->orig_height = avctx->coded_height;
+
     if (avctx->extradata_size < 2) {
         av_log(avctx, AV_LOG_ERROR, "Extradata is too small.\n");
         return AVERROR(EINVAL);
index 870164c6e5da9913ccc1626db8e096a2a1eb1577..e2f40c8e5a7f15db06c1c27ee4d3c2cbcd048109 100644 (file)
@@ -109,6 +109,8 @@ typedef struct RV34DecContext{
     int weight1, weight2;    ///< B frame distance fractions (0.14) used in motion compensation
     int mv_weight1, mv_weight2;
 
+    int orig_width, orig_height;
+
     uint16_t *cbp_luma;      ///< CBP values for luma subblocks
     uint8_t  *cbp_chroma;    ///< CBP values for chroma subblocks
     uint16_t *deblock_coefs; ///< deblock coefficients for each macroblock