diff options
author | rongrong zhou <rongrong.zhou@amlogic.com> | 2018-07-18 18:26:31 +0800 |
---|---|---|
committer | Zhi Zhou <zhi.zhou@amlogic.com> | 2018-07-25 19:28:53 -0700 |
commit | 9f29a7f54a8161fefe190217ffe817b587e5fe20 (patch) | |
tree | 1e966a099a7b8de11f46d46cc8fccaa9d7886bfa | |
parent | a52334e09181ff9d1090489a2f56963a9a9561af (diff) | |
download | media_modules-9f29a7f54a8161fefe190217ffe817b587e5fe20.tar.gz |
codec_mm: fix alloc fail issue
PD# 169831
1. if alloc bmmu idx fail, try free keep video
2. delete redundant code to set the connected status in vmjpeg_multi
Change-Id: I356be5cf530600c3b439b4beab6289eba98c9d1a
-rw-r--r-- | drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c | 1 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/utils/decoder_bmmu_box.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c b/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c index a0b4493..7364f35 100644 --- a/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c +++ b/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c @@ -795,7 +795,6 @@ static void vmjpeg_work(struct work_struct *work) } amvdec_stop(); /* mark itself has all HW resource released and input released */ - vdec_set_status(hw_to_vdec(hw), VDEC_STATUS_CONNECTED); vdec_core_finish_run(hw_to_vdec(hw), CORE_MASK_VDEC_1 | CORE_MASK_HEVC); del_timer_sync(&hw->check_timer); diff --git a/drivers/frame_provider/decoder/utils/decoder_bmmu_box.c b/drivers/frame_provider/decoder/utils/decoder_bmmu_box.c index fe00832..6181063 100644 --- a/drivers/frame_provider/decoder/utils/decoder_bmmu_box.c +++ b/drivers/frame_provider/decoder/utils/decoder_bmmu_box.c @@ -298,6 +298,10 @@ int decoder_bmmu_box_alloc_idx_wait( if (have_space) { ret = decoder_bmmu_box_alloc_idx(handle, idx, size, aligned_2n, mem_flags); + if (ret == -ENOMEM) { + pr_info("bmmu alloc idx fail, try free keep video.\n"); + try_free_keep_video(1); + } } else { try_free_keep_video(1); ret = -ENOMEM; @@ -335,7 +339,7 @@ int decoder_bmmu_box_alloc_buf_phy( * driver_name, idx, *buf_phy_addr, size); */ } else { - pr_info("%s malloc failed %d\n", driver_name, idx); + pr_info("%s malloc failed %d\n", driver_name, idx); return -ENOMEM; } |