|
|
|
@@ -290,11 +290,6 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
} |
|
|
|
|
|
|
|
frame_type = bytestream2_get_byte(&gb); |
|
|
|
if ((ret = ff_reget_buffer(avctx, c->pic)) < 0) |
|
|
|
return ret; |
|
|
|
|
|
|
|
c->pic->key_frame = frame_type & 0x20 ? 1 : 0; |
|
|
|
c->pic->pict_type = frame_type & 0x20 ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; |
|
|
|
|
|
|
|
if (frame_type & 0x2) { |
|
|
|
if (buf_size < c->mb_width * c->mb_height) { |
|
|
|
@@ -302,6 +297,12 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} |
|
|
|
|
|
|
|
if ((ret = ff_reget_buffer(avctx, c->pic)) < 0) |
|
|
|
return ret; |
|
|
|
|
|
|
|
c->pic->key_frame = frame_type & 0x20 ? 1 : 0; |
|
|
|
c->pic->pict_type = frame_type & 0x20 ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; |
|
|
|
|
|
|
|
bytestream2_get_be32(&gb); // frame size; |
|
|
|
c->ac_quant = bytestream2_get_byte(&gb); |
|
|
|
c->luma_dc_quant = 32; |
|
|
|
@@ -323,13 +324,13 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
mb_ret = ret; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} |
|
|
|
|
|
|
|
if ((ret = av_frame_ref(data, c->pic)) < 0) |
|
|
|
return ret; |
|
|
|
if ((ret = av_frame_ref(data, c->pic)) < 0) |
|
|
|
return ret; |
|
|
|
|
|
|
|
*got_frame = 1; |
|
|
|
*got_frame = 1; |
|
|
|
} else { |
|
|
|
} |
|
|
|
|
|
|
|
return mb_ret < 0 ? mb_ret : buf_size; |
|
|
|
} |
|
|
|
|