Browse Source

avcodec/rv30: fix switching back to the original resolution

Fixes part of Ticket1388

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n2.8
Michael Niedermayer 10 years ago
parent
commit
7f769ae41e
2 changed files with 8 additions and 0 deletions
  1. +6
    -0
      libavcodec/rv30.c
  2. +2
    -0
      libavcodec/rv34.h

+ 6
- 0
libavcodec/rv30.c View 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);


+ 2
- 0
libavcodec/rv34.h View 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


Loading…
Cancel
Save