|
@@ -359,18 +359,16 @@ session_process_buf(struct venus_inst *inst, struct vb2_v4l2_buffer *vbuf)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static inline int is_reg_unreg_needed(struct venus_inst *inst)
|
|
|
+static bool is_dynamic_bufmode(struct venus_inst *inst)
|
|
|
{
|
|
|
- if (inst->session_type == VIDC_SESSION_TYPE_DEC &&
|
|
|
- inst->core->res->hfi_version == HFI_VERSION_3XX)
|
|
|
- return 0;
|
|
|
+ struct venus_core *core = inst->core;
|
|
|
+ struct venus_caps *caps;
|
|
|
|
|
|
- if (inst->session_type == VIDC_SESSION_TYPE_DEC &&
|
|
|
- inst->cap_bufs_mode_dynamic &&
|
|
|
- inst->core->res->hfi_version == HFI_VERSION_1XX)
|
|
|
+ caps = venus_caps_by_codec(core, inst->hfi_codec, inst->session_type);
|
|
|
+ if (!caps)
|
|
|
return 0;
|
|
|
|
|
|
- return 1;
|
|
|
+ return caps->cap_bufs_mode_dynamic;
|
|
|
}
|
|
|
|
|
|
static int session_unregister_bufs(struct venus_inst *inst)
|
|
@@ -379,7 +377,7 @@ static int session_unregister_bufs(struct venus_inst *inst)
|
|
|
struct hfi_buffer_desc bd;
|
|
|
int ret = 0;
|
|
|
|
|
|
- if (!is_reg_unreg_needed(inst))
|
|
|
+ if (is_dynamic_bufmode(inst))
|
|
|
return 0;
|
|
|
|
|
|
list_for_each_entry_safe(buf, n, &inst->registeredbufs, reg_list) {
|
|
@@ -399,7 +397,7 @@ static int session_register_bufs(struct venus_inst *inst)
|
|
|
struct venus_buffer *buf;
|
|
|
int ret = 0;
|
|
|
|
|
|
- if (!is_reg_unreg_needed(inst))
|
|
|
+ if (is_dynamic_bufmode(inst))
|
|
|
return 0;
|
|
|
|
|
|
list_for_each_entry(buf, &inst->registeredbufs, reg_list) {
|