video: driver: fixes for streamoff/streamon
Changes to fix streamon/streamoff functionality. Change-Id: Ibefa04c5812e0f5a42c578e72eea7650e37c18b0 Signed-off-by: Akshata Sahukar <asahukar@quicinc.com>
这个提交包含在:

提交者
Gerrit - the friendly Code Review server

父节点
78857beace
当前提交
2bbf35063f
@@ -8,13 +8,10 @@
|
||||
|
||||
#include "msm_vidc_inst.h"
|
||||
|
||||
u32 msm_vidc_decoder_scratch_size_iris2(struct msm_vidc_inst *inst);
|
||||
u32 msm_vidc_decoder_scratch_1_size_iris2(struct msm_vidc_inst *inst);
|
||||
u32 msm_vidc_decoder_persist_1_size_iris2(struct msm_vidc_inst *inst);
|
||||
|
||||
u32 msm_vidc_encoder_scratch_size_iris2(struct msm_vidc_inst *inst);
|
||||
u32 msm_vidc_encoder_scratch_1_size_iris2(struct msm_vidc_inst *inst);
|
||||
u32 msm_vidc_encoder_scratch_2_size_iris2(struct msm_vidc_inst *inst);
|
||||
u32 msm_vidc_encoder_persist_size_iris2(struct msm_vidc_inst *inst);
|
||||
|
||||
int msm_buffer_size_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type);
|
||||
int msm_buffer_min_count_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type);
|
||||
int msm_buffer_extra_count_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type);
|
||||
#endif // __H_MSM_VIDC_BUFFER_IRIS2_H__
|
||||
|
@@ -1003,7 +1003,7 @@ static u32 calculate_mpeg2d_persist1_size(void)
|
||||
}
|
||||
|
||||
/* decoder internal buffers */
|
||||
u32 msm_vidc_decoder_scratch_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_decoder_bin_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
struct msm_vidc_core *core;
|
||||
u32 size = 0;
|
||||
@@ -1050,7 +1050,7 @@ u32 msm_vidc_decoder_scratch_size_iris2(struct msm_vidc_inst *inst)
|
||||
return size;
|
||||
}
|
||||
|
||||
u32 msm_vidc_decoder_scratch_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_decoder_scratch_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
struct msm_vidc_core *core;
|
||||
u32 size = 0;
|
||||
@@ -1101,7 +1101,7 @@ u32 msm_vidc_decoder_scratch_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
return size;
|
||||
}
|
||||
|
||||
u32 msm_vidc_decoder_persist_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_decoder_persist_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
u32 size = 0;
|
||||
|
||||
@@ -1125,7 +1125,7 @@ u32 msm_vidc_decoder_persist_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
}
|
||||
|
||||
/* encoder internal buffers */
|
||||
u32 msm_vidc_encoder_scratch_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_encoder_bin_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
struct msm_vidc_core *core;
|
||||
u32 size = 0;
|
||||
@@ -1161,7 +1161,7 @@ u32 msm_vidc_encoder_scratch_size_iris2(struct msm_vidc_inst *inst)
|
||||
return size;
|
||||
}
|
||||
|
||||
u32 msm_vidc_encoder_scratch_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_encoder_scratch_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
struct msm_vidc_core *core;
|
||||
u32 size = 0;
|
||||
@@ -1198,7 +1198,7 @@ u32 msm_vidc_encoder_scratch_1_size_iris2(struct msm_vidc_inst *inst)
|
||||
return size;
|
||||
}
|
||||
|
||||
u32 msm_vidc_encoder_scratch_2_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_encoder_dpb_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
u32 width, height, num_ref;
|
||||
bool is_tenbit = false;
|
||||
@@ -1212,14 +1212,171 @@ u32 msm_vidc_encoder_scratch_2_size_iris2(struct msm_vidc_inst *inst)
|
||||
f = &inst->fmts[OUTPUT_PORT];
|
||||
width = f->fmt.pix_mp.width;
|
||||
height = f->fmt.pix_mp.height;
|
||||
num_ref = 4; //msm_vidc_get_num_ref_frames(inst);
|
||||
is_tenbit = false; //(inst->bit_depth == MSM_VIDC_BIT_DEPTH_10);
|
||||
num_ref = 4; // TODO: msm_vidc_get_num_ref_frames(inst);
|
||||
is_tenbit = false; // TODO: (inst->bit_depth == MSM_VIDC_BIT_DEPTH_10);
|
||||
|
||||
return calculate_enc_scratch2_size(inst, width, height,
|
||||
num_ref, is_tenbit);
|
||||
}
|
||||
|
||||
u32 msm_vidc_encoder_persist_size_iris2(struct msm_vidc_inst *inst)
|
||||
static u32 msm_vidc_encoder_persist_size_iris2(struct msm_vidc_inst *inst)
|
||||
{
|
||||
return calculate_enc_persist_size();
|
||||
}
|
||||
|
||||
int msm_buffer_size_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type)
|
||||
{
|
||||
int size = 0;
|
||||
|
||||
if (!inst) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return size;
|
||||
}
|
||||
|
||||
if (is_decode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
size = msm_vidc_decoder_input_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
size = msm_vidc_decoder_output_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
size = msm_vidc_decoder_input_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
size = msm_vidc_decoder_output_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_BIN:
|
||||
size = msm_vidc_decoder_bin_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_COMV:
|
||||
case MSM_VIDC_BUF_NON_COMV:
|
||||
case MSM_VIDC_BUF_LINE:
|
||||
size = msm_vidc_decoder_scratch_1_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_PERSIST:
|
||||
//size = msm_vidc_decoder_persist_1_size_iris2(inst);
|
||||
size = msm_vidc_decoder_persist_size_iris2(inst);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (is_encode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
size = msm_vidc_encoder_input_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
size = msm_vidc_encoder_output_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
size = msm_vidc_encoder_input_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
size = msm_vidc_encoder_output_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_BIN:
|
||||
size = msm_vidc_encoder_bin_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_COMV:
|
||||
case MSM_VIDC_BUF_NON_COMV:
|
||||
case MSM_VIDC_BUF_LINE:
|
||||
size = msm_vidc_encoder_scratch_1_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_DPB:
|
||||
size = msm_vidc_encoder_dpb_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_PERSIST:
|
||||
size = msm_vidc_encoder_persist_size_iris2(inst);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
int msm_buffer_min_count_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
if (!inst) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (is_decode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
count = msm_vidc_input_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
count = msm_vidc_output_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_BIN:
|
||||
case MSM_VIDC_BUF_COMV:
|
||||
case MSM_VIDC_BUF_NON_COMV:
|
||||
case MSM_VIDC_BUF_LINE:
|
||||
case MSM_VIDC_BUF_PERSIST:
|
||||
count = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (is_encode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
count = msm_vidc_input_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
count = msm_vidc_output_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_BIN:
|
||||
case MSM_VIDC_BUF_COMV:
|
||||
case MSM_VIDC_BUF_NON_COMV:
|
||||
case MSM_VIDC_BUF_LINE:
|
||||
case MSM_VIDC_BUF_DPB:
|
||||
case MSM_VIDC_BUF_PERSIST:
|
||||
count = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
int msm_buffer_extra_count_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
if (!inst) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
count = msm_vidc_input_extra_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
count = msm_vidc_output_extra_count(inst);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@@ -495,161 +495,10 @@ static struct msm_vidc_venus_ops iris2_ops = {
|
||||
.noc_error_info = __noc_error_info_iris2,
|
||||
};
|
||||
|
||||
static int msm_vidc_buffer_size_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type)
|
||||
{
|
||||
int size = 0;
|
||||
|
||||
d_vpr_h("%s()\n", __func__);
|
||||
if (!inst) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return size;
|
||||
}
|
||||
|
||||
if (is_decode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
size = msm_vidc_decoder_input_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
size = msm_vidc_decoder_output_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
size = msm_vidc_decoder_input_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
size = msm_vidc_decoder_output_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH:
|
||||
size = msm_vidc_decoder_scratch_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH_1:
|
||||
size = msm_vidc_decoder_scratch_1_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_PERSIST_1:
|
||||
size = msm_vidc_decoder_persist_1_size_iris2(inst);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (is_encode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
size = msm_vidc_encoder_input_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
size = msm_vidc_encoder_output_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
size = msm_vidc_encoder_input_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
size = msm_vidc_encoder_output_meta_size(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH:
|
||||
size = msm_vidc_encoder_scratch_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH_1:
|
||||
size = msm_vidc_encoder_scratch_1_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH_2:
|
||||
size = msm_vidc_encoder_scratch_2_size_iris2(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_PERSIST:
|
||||
size = msm_vidc_encoder_persist_size_iris2(inst);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
static int msm_vidc_min_count_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
if (!inst) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
d_vpr_h("%s()\n", __func__);
|
||||
|
||||
if (is_decode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
count = msm_vidc_input_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
count = msm_vidc_output_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH:
|
||||
case MSM_VIDC_BUF_SCRATCH_1:
|
||||
case MSM_VIDC_BUF_PERSIST_1:
|
||||
count = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (is_encode_session(inst)) {
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
count = msm_vidc_input_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
count = msm_vidc_output_min_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_SCRATCH:
|
||||
case MSM_VIDC_BUF_SCRATCH_1:
|
||||
case MSM_VIDC_BUF_SCRATCH_2:
|
||||
case MSM_VIDC_BUF_PERSIST:
|
||||
count = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static int msm_vidc_extra_count_iris2(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_buffer_type buffer_type)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
if (!inst) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
d_vpr_h("%s()\n", __func__);
|
||||
|
||||
switch (buffer_type) {
|
||||
case MSM_VIDC_BUF_INPUT:
|
||||
case MSM_VIDC_BUF_INPUT_META:
|
||||
count = msm_vidc_input_extra_count(inst);
|
||||
break;
|
||||
case MSM_VIDC_BUF_OUTPUT:
|
||||
case MSM_VIDC_BUF_OUTPUT_META:
|
||||
count = msm_vidc_output_extra_count(inst);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static struct msm_vidc_session_ops msm_session_ops = {
|
||||
.buffer_size = msm_vidc_buffer_size_iris2,
|
||||
.min_count = msm_vidc_min_count_iris2,
|
||||
.extra_count = msm_vidc_extra_count_iris2,
|
||||
.buffer_size = msm_buffer_size_iris2,
|
||||
.min_count = msm_buffer_min_count_iris2,
|
||||
.extra_count = msm_buffer_extra_count_iris2,
|
||||
.calc_freq = NULL,
|
||||
.calc_bw = NULL,
|
||||
.decide_work_route = NULL,
|
||||
|
在新工单中引用
屏蔽一个用户