summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--drivers/frame_provider/decoder/avs2/vavs2.c11
-rw-r--r--drivers/frame_provider/decoder/h264/vh264_mvc.c38
-rw-r--r--drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c65
-rw-r--r--drivers/frame_provider/decoder/mpeg12/vmpeg12_multi.c94
-rw-r--r--drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c68
5 files changed, 214 insertions, 62 deletions
diff --git a/drivers/frame_provider/decoder/avs2/vavs2.c b/drivers/frame_provider/decoder/avs2/vavs2.c
index 6258a75..f90fee6 100644
--- a/drivers/frame_provider/decoder/avs2/vavs2.c
+++ b/drivers/frame_provider/decoder/avs2/vavs2.c
@@ -761,6 +761,7 @@ struct AVS2Decoder_s {
#endif
int frameinfo_enable;
struct vframe_qos_s vframe_qos;
+ u32 dynamic_buf_margin;
};
static int compute_losless_comp_body_size(
@@ -3885,7 +3886,7 @@ static int avs2_local_init(struct AVS2Decoder_s *dec)
#ifndef AVS2_10B_MMU
init_buf_list(dec);
#else
- dec->used_buf_num = max_buf_num;
+ dec->used_buf_num = max_buf_num + dec->dynamic_buf_margin;
if (dec->used_buf_num > MAX_BUF_NUM)
dec->used_buf_num = MAX_BUF_NUM;
if (dec->used_buf_num > FRAME_BUFFERS)
@@ -7318,6 +7319,13 @@ static int ammvdec_avs2_probe(struct platform_device *pdev)
dec->double_write_mode = config_val;
else
dec->double_write_mode = double_write_mode;
+
+ if (get_config_int(pdata->config, "parm_v4l_buffer_margin",
+ &config_val) == 0)
+ dec->dynamic_buf_margin = config_val;
+ else
+ dec->dynamic_buf_margin = 0;
+
if (get_config_int(pdata->config, "HDRStaticInfo",
&vf_dp.present_flag) == 0
&& vf_dp.present_flag == 1) {
@@ -7363,6 +7371,7 @@ static int ammvdec_avs2_probe(struct platform_device *pdev)
dec->vavs2_amstream_dec_info.height = 0;
dec->vavs2_amstream_dec_info.rate = 30;*/
dec->double_write_mode = double_write_mode;
+ dec->dynamic_buf_margin = dynamic_buf_num_margin;
}
video_signal_type = dec->video_signal_type;