mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 09:34:17 +00:00
media: venus: hfi: update sequence event to handle more properties
HFI version 4xx can pass more properties in the sequence change event, extend the event structure with them. Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Reviewed-by: Tomasz Figa <tfiga@chromium.org> Reviewed-by: Alexandre Courbot <acourbot@chromium.org> Tested-by: Alexandre Courbot <acourbot@chromium.org> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
f04997bdca
commit
9eb2146ecb
@ -74,6 +74,16 @@ struct hfi_event_data {
|
||||
u32 tag;
|
||||
u32 profile;
|
||||
u32 level;
|
||||
/* the following properties start appear from v4 onwards */
|
||||
u32 bit_depth;
|
||||
u32 pic_struct;
|
||||
u32 colour_space;
|
||||
u32 entropy_mode;
|
||||
u32 buf_count;
|
||||
struct {
|
||||
u32 left, top;
|
||||
u32 width, height;
|
||||
} input_crop;
|
||||
};
|
||||
|
||||
/* define core states */
|
||||
|
@ -801,6 +801,34 @@ struct hfi_h264_vui_timing_info {
|
||||
u32 time_scale;
|
||||
};
|
||||
|
||||
struct hfi_bit_depth {
|
||||
u32 buffer_type;
|
||||
u32 bit_depth;
|
||||
};
|
||||
|
||||
struct hfi_picture_type {
|
||||
u32 is_sync_frame;
|
||||
u32 picture_type;
|
||||
};
|
||||
|
||||
struct hfi_pic_struct {
|
||||
u32 progressive_only;
|
||||
};
|
||||
|
||||
struct hfi_colour_space {
|
||||
u32 colour_space;
|
||||
};
|
||||
|
||||
struct hfi_extradata_input_crop {
|
||||
u32 size;
|
||||
u32 version;
|
||||
u32 port_index;
|
||||
u32 left;
|
||||
u32 top;
|
||||
u32 width;
|
||||
u32 height;
|
||||
};
|
||||
|
||||
#define HFI_COLOR_FORMAT_MONOCHROME 0x01
|
||||
#define HFI_COLOR_FORMAT_NV12 0x02
|
||||
#define HFI_COLOR_FORMAT_NV21 0x03
|
||||
|
@ -25,10 +25,16 @@
|
||||
static void event_seq_changed(struct venus_core *core, struct venus_inst *inst,
|
||||
struct hfi_msg_event_notify_pkt *pkt)
|
||||
{
|
||||
enum hfi_version ver = core->res->hfi_version;
|
||||
struct hfi_event_data event = {0};
|
||||
int num_properties_changed;
|
||||
struct hfi_framesize *frame_sz;
|
||||
struct hfi_profile_level *profile_level;
|
||||
struct hfi_bit_depth *pixel_depth;
|
||||
struct hfi_pic_struct *pic_struct;
|
||||
struct hfi_colour_space *colour_info;
|
||||
struct hfi_buffer_requirements *bufreq;
|
||||
struct hfi_extradata_input_crop *crop;
|
||||
u8 *data_ptr;
|
||||
u32 ptype;
|
||||
|
||||
@ -69,6 +75,44 @@ static void event_seq_changed(struct venus_core *core, struct venus_inst *inst,
|
||||
event.level = profile_level->level;
|
||||
data_ptr += sizeof(*profile_level);
|
||||
break;
|
||||
case HFI_PROPERTY_PARAM_VDEC_PIXEL_BITDEPTH:
|
||||
data_ptr += sizeof(u32);
|
||||
pixel_depth = (struct hfi_bit_depth *)data_ptr;
|
||||
event.bit_depth = pixel_depth->bit_depth;
|
||||
data_ptr += sizeof(*pixel_depth);
|
||||
break;
|
||||
case HFI_PROPERTY_PARAM_VDEC_PIC_STRUCT:
|
||||
data_ptr += sizeof(u32);
|
||||
pic_struct = (struct hfi_pic_struct *)data_ptr;
|
||||
event.pic_struct = pic_struct->progressive_only;
|
||||
data_ptr += sizeof(*pic_struct);
|
||||
break;
|
||||
case HFI_PROPERTY_PARAM_VDEC_COLOUR_SPACE:
|
||||
data_ptr += sizeof(u32);
|
||||
colour_info = (struct hfi_colour_space *)data_ptr;
|
||||
event.colour_space = colour_info->colour_space;
|
||||
data_ptr += sizeof(*colour_info);
|
||||
break;
|
||||
case HFI_PROPERTY_CONFIG_VDEC_ENTROPY:
|
||||
data_ptr += sizeof(u32);
|
||||
event.entropy_mode = *(u32 *)data_ptr;
|
||||
data_ptr += sizeof(u32);
|
||||
break;
|
||||
case HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS:
|
||||
data_ptr += sizeof(u32);
|
||||
bufreq = (struct hfi_buffer_requirements *)data_ptr;
|
||||
event.buf_count = HFI_BUFREQ_COUNT_MIN(bufreq, ver);
|
||||
data_ptr += sizeof(*bufreq);
|
||||
break;
|
||||
case HFI_INDEX_EXTRADATA_INPUT_CROP:
|
||||
data_ptr += sizeof(u32);
|
||||
crop = (struct hfi_extradata_input_crop *)data_ptr;
|
||||
event.input_crop.left = crop->left;
|
||||
event.input_crop.top = crop->top;
|
||||
event.input_crop.width = crop->width;
|
||||
event.input_crop.height = crop->height;
|
||||
data_ptr += sizeof(*crop);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user