@@ -66,6 +66,8 @@ typedef struct Mpeg4DecContext { | |||||
int time_increment_bits; | int time_increment_bits; | ||||
int shape; | int shape; | ||||
int vol_sprite_usage; | int vol_sprite_usage; | ||||
// reversible vlc | |||||
int rvlc; | |||||
} Mpeg4DecContext; | } Mpeg4DecContext; | ||||
/* dc encoding for mpeg4 */ | /* dc encoding for mpeg4 */ | ||||
@@ -1226,7 +1226,7 @@ static int mpeg4_decode_partitioned_mb(MpegEncContext *s, int16_t block[6][64]) | |||||
s->dsp.clear_blocks(s->block[0]); | s->dsp.clear_blocks(s->block[0]); | ||||
/* decode each block */ | /* decode each block */ | ||||
for (i = 0; i < 6; i++) { | for (i = 0; i < 6; i++) { | ||||
if (mpeg4_decode_block(s, block[i], i, cbp & 32, s->mb_intra, s->rvlc) < 0) { | |||||
if (mpeg4_decode_block(s, block[i], i, cbp & 32, s->mb_intra, ctx->rvlc) < 0) { | |||||
av_log(s->avctx, AV_LOG_ERROR, | av_log(s->avctx, AV_LOG_ERROR, | ||||
"texture corrupted at %d %d %d\n", | "texture corrupted at %d %d %d\n", | ||||
s->mb_x, s->mb_y, s->mb_intra); | s->mb_x, s->mb_y, s->mb_intra); | ||||
@@ -1935,7 +1935,7 @@ no_cplx_est: | |||||
s->data_partitioning = get_bits1(gb); | s->data_partitioning = get_bits1(gb); | ||||
if (s->data_partitioning) | if (s->data_partitioning) | ||||
s->rvlc = get_bits1(gb); | |||||
ctx->rvlc = get_bits1(gb); | |||||
if (vo_ver_id != 1) { | if (vo_ver_id != 1) { | ||||
s->new_pred = get_bits1(gb); | s->new_pred = get_bits1(gb); | ||||
@@ -599,7 +599,6 @@ typedef struct MpegEncContext { | |||||
int low_latency_sprite; | int low_latency_sprite; | ||||
int data_partitioning; ///< data partitioning flag from header | int data_partitioning; ///< data partitioning flag from header | ||||
int partitioned_frame; ///< is current frame partitioned | int partitioned_frame; ///< is current frame partitioned | ||||
int rvlc; ///< reversible vlc | |||||
int resync_marker; ///< could this stream contain resync markers | int resync_marker; ///< could this stream contain resync markers | ||||
int low_delay; ///< no reordering needed / has no b-frames | int low_delay; ///< no reordering needed / has no b-frames | ||||
int vo_type; | int vo_type; | ||||
@@ -71,7 +71,7 @@ static int vaapi_mpeg4_start_frame(AVCodecContext *avctx, av_unused const uint8_ | |||||
pic_param->vol_fields.bits.quant_type = s->mpeg_quant; | pic_param->vol_fields.bits.quant_type = s->mpeg_quant; | ||||
pic_param->vol_fields.bits.quarter_sample = s->quarter_sample; | pic_param->vol_fields.bits.quarter_sample = s->quarter_sample; | ||||
pic_param->vol_fields.bits.data_partitioned = s->data_partitioning; | pic_param->vol_fields.bits.data_partitioned = s->data_partitioning; | ||||
pic_param->vol_fields.bits.reversible_vlc = s->rvlc; | |||||
pic_param->vol_fields.bits.reversible_vlc = ctx->rvlc; | |||||
pic_param->vol_fields.bits.resync_marker_disable = !s->resync_marker; | pic_param->vol_fields.bits.resync_marker_disable = !s->resync_marker; | ||||
pic_param->no_of_sprite_warping_points = s->num_sprite_warping_points; | pic_param->no_of_sprite_warping_points = s->num_sprite_warping_points; | ||||
for (i = 0; i < s->num_sprite_warping_points && i < 3; i++) { | for (i = 0; i < s->num_sprite_warping_points && i < 3; i++) { | ||||