mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 13:50:09 +01:00
radeon/vcn: add decode message for mpeg4 codec
Signed-off-by: Leo Liu <leo.liu@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
155ca0ca50
commit
34f7cf49c8
1 changed files with 51 additions and 0 deletions
|
|
@ -503,6 +503,49 @@ static rvcn_dec_message_mpeg2_vld_t get_mpeg2_msg(struct radeon_decoder *dec,
|
|||
return result;
|
||||
}
|
||||
|
||||
static rvcn_dec_message_mpeg4_asp_vld_t get_mpeg4_msg(struct radeon_decoder *dec,
|
||||
struct pipe_mpeg4_picture_desc *pic)
|
||||
{
|
||||
rvcn_dec_message_mpeg4_asp_vld_t result;
|
||||
unsigned i;
|
||||
|
||||
memset(&result, 0, sizeof(result));
|
||||
result.decoded_pic_idx = dec->frame_number;
|
||||
|
||||
result.forward_ref_pic_idx = get_ref_pic_idx(dec, pic->ref[0]);
|
||||
result.backward_ref_pic_idx = get_ref_pic_idx(dec, pic->ref[1]);
|
||||
|
||||
result.variant_type = 0;
|
||||
result.profile_and_level_indication = 0xF0;
|
||||
|
||||
result.video_object_layer_verid = 0x5;
|
||||
result.video_object_layer_shape = 0x0;
|
||||
|
||||
result.video_object_layer_width = dec->base.width;
|
||||
result.video_object_layer_height = dec->base.height;
|
||||
|
||||
result.vop_time_increment_resolution = pic->vop_time_increment_resolution;
|
||||
|
||||
result.short_video_header |= pic->short_video_header << 0;
|
||||
result.interlaced |= pic->interlaced << 2;
|
||||
result.load_intra_quant_mat |= 1 << 3;
|
||||
result.load_nonintra_quant_mat |= 1 << 4;
|
||||
result.quarter_sample |= pic->quarter_sample << 5;
|
||||
result.complexity_estimation_disable |= 1 << 6;
|
||||
result.resync_marker_disable |= pic->resync_marker_disable << 7;
|
||||
result.newpred_enable |= 0 << 10; //
|
||||
result.reduced_resolution_vop_enable |= 0 << 11;
|
||||
|
||||
result.quant_type = pic->quant_type;
|
||||
|
||||
for (i = 0; i < 64; ++i) {
|
||||
result.intra_quant_mat[i] = pic->intra_matrix[vl_zscan_normal[i]];
|
||||
result.nonintra_quant_mat[i] = pic->non_intra_matrix[vl_zscan_normal[i]];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static void rvcn_dec_message_create(struct radeon_decoder *dec)
|
||||
{
|
||||
rvcn_dec_message_header_t *header = dec->msg;
|
||||
|
|
@ -657,6 +700,14 @@ static struct pb_buffer *rvcn_dec_message_decode(struct radeon_decoder *dec,
|
|||
index->message_id = RDECODE_MESSAGE_MPEG2_VLD;
|
||||
break;
|
||||
}
|
||||
case PIPE_VIDEO_FORMAT_MPEG4: {
|
||||
rvcn_dec_message_mpeg4_asp_vld_t mpeg4 =
|
||||
get_mpeg4_msg(dec, (struct pipe_mpeg4_picture_desc*)picture);
|
||||
|
||||
memcpy(codec, (void*)&mpeg4, sizeof(rvcn_dec_message_mpeg4_asp_vld_t));
|
||||
index->message_id = RDECODE_MESSAGE_MPEG4_ASP_VLD;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert(0);
|
||||
return NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue