Project import generated by Copybara. GitOrigin-RevId: 9a8f48e904d2d8e81fafc4ef146826aca9541b3a Change-Id: I4ad8b1ef175e8d5b79008e437263ac972c62b334
diff --git a/drivers/frame_provider/decoder/vp9/vvp9.c b/drivers/frame_provider/decoder/vp9/vvp9.c index 2111c6a..ce4c496 100644 --- a/drivers/frame_provider/decoder/vp9/vvp9.c +++ b/drivers/frame_provider/decoder/vp9/vvp9.c
@@ -9546,17 +9546,10 @@ if (!vdec_frame_based(hw_to_vdec(pbi))) dec_again_process(pbi); else { - if (pbi->common.show_existing_frame) { pbi->dec_result = DEC_RESULT_DONE; amhevc_stop(); vdec_schedule_work(&pbi->work); } - else { - pbi->dec_result = DEC_RESULT_ERROR; - amhevc_stop(); - vdec_schedule_work(&pbi->work); - } - } } pbi->process_busy = 0; return IRQ_HANDLED; @@ -11189,9 +11182,13 @@ pbi->process_state = PROC_STATE_INIT; decode_frame_count[pbi->index] = pbi->frame_count; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -11247,9 +11244,13 @@ pbi->frame_count++; pbi->process_state = PROC_STATE_INIT; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -11262,8 +11263,6 @@ READ_VREG(HEVC_SHIFT_BYTE_COUNT) - pbi->start_shift_bytes); amhevc_stop(); - } else if (pbi->dec_result == DEC_RESULT_ERROR) { - vdec_vframe_dirty(hw_to_vdec(pbi), pbi->chunk); } if (pbi->stat & STAT_VDEC_RUN) { amhevc_stop();
diff --git a/drivers/frame_provider/decoder/vp9_fb/vvp9_fb.c b/drivers/frame_provider/decoder/vp9_fb/vvp9_fb.c index d16436d..f7c42bb 100644 --- a/drivers/frame_provider/decoder/vp9_fb/vvp9_fb.c +++ b/drivers/frame_provider/decoder/vp9_fb/vvp9_fb.c
@@ -12776,7 +12776,6 @@ if (!vdec_frame_based(hw_to_vdec(pbi))) dec_again_process(pbi); else { - if (pbi->common.show_existing_frame) { pbi->dec_result = DEC_RESULT_DONE; #ifdef NEW_FB_CODE if (pbi->front_back_mode == 1) { @@ -12789,11 +12788,6 @@ } vdec_schedule_work(&pbi->work); } - else { - pbi->dec_result = DEC_RESULT_GET_DATA; - vdec_schedule_work(&pbi->work); - } - } } pbi->process_busy = 0; return IRQ_HANDLED; @@ -14776,9 +14770,15 @@ pbi->process_state = PROC_STATE_INIT; decode_frame_count[pbi->index] = pbi->frame_count; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + if (pbi->front_back_mode == 0) { + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -14838,9 +14838,15 @@ pbi->frame_count++; pbi->process_state = PROC_STATE_INIT; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + if (pbi->front_back_mode == 0) { + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__,
diff --git a/drivers/frame_provider/decoder_v4l/vp9/vvp9.c b/drivers/frame_provider/decoder_v4l/vp9/vvp9.c index ce5d86c..0d93ba8 100644 --- a/drivers/frame_provider/decoder_v4l/vp9/vvp9.c +++ b/drivers/frame_provider/decoder_v4l/vp9/vvp9.c
@@ -1255,6 +1255,7 @@ ulong rdma_mem_handle; bool timeout; int v4l_duration; + bool has_unfinish; }; static int vp9_print(struct VP9Decoder_s *pbi, @@ -8539,20 +8540,14 @@ vp9_buf_ref_process_for_exception(pbi); dec_again_process(pbi); } else { - if (pbi->common.show_existing_frame) { + if (!pbi->common.show_existing_frame) { + if (pbi->has_unfinish != true) + vdec_v4l_post_error_frame_event(ctx); + } pbi->dec_result = DEC_RESULT_DONE; amhevc_stop(); vdec_schedule_work(&pbi->work); } - else { - if (vdec_frame_based(hw_to_vdec(pbi))) - if (pbi->dec_result != DEC_RESULT_UNFINISH) - vdec_v4l_post_error_frame_event(ctx); - pbi->dec_result = DEC_RESULT_ERROR; - amhevc_stop(); - vdec_schedule_work(&pbi->work); - } - } } pbi->process_busy = 0; return IRQ_HANDLED; @@ -9851,9 +9846,13 @@ decode_frame_count[pbi->index] = pbi->frame_count; ctx->decoder_status_info.decoder_count++; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -9909,9 +9908,13 @@ pbi->frame_count++; pbi->process_state = PROC_STATE_INIT; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -9924,8 +9927,6 @@ READ_VREG(HEVC_SHIFT_BYTE_COUNT) - pbi->start_shift_bytes); amhevc_stop(); - } else if (pbi->dec_result == DEC_RESULT_ERROR) { - vdec_vframe_dirty(hw_to_vdec(pbi), pbi->chunk); } if (pbi->stat & STAT_VDEC_RUN) { amhevc_stop(); @@ -10289,6 +10290,8 @@ (pbi->dec_result == DEC_RESULT_UNFINISH)) { u32 res_byte = pbi->data_size - pbi->consume_byte; + pbi->has_unfinish = true; + vp9_print(pbi, VP9_DEBUG_BUFMGR, "%s before, consume 0x%x, size 0x%x, offset 0x%x, res 0x%x\n", __func__, pbi->consume_byte, pbi->data_size, pbi->data_offset + pbi->consume_byte, res_byte); @@ -10320,13 +10323,13 @@ pbi->data_offset = pbi->chunk->offset; pbi->data_size = size; } + pbi->has_unfinish = false; WRITE_VREG(HEVC_ASSIST_SCRATCH_C, 0); } vdec_tracing(&ctx->vtr, VTRACE_DEC_ST_0, size); input_empty[pbi->index] = 0; - if (pbi->dec_result != DEC_RESULT_UNFINISH) pbi->dec_result = DEC_RESULT_NONE; pbi->start_shift_bytes = READ_VREG(HEVC_SHIFT_BYTE_COUNT);
diff --git a/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c b/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c index f872f54..29da897 100644 --- a/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c +++ b/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c
@@ -1592,6 +1592,7 @@ int triple_write_mode; int start_decoder_flag; int v4l_duration; + bool has_unfinish; }; #ifdef NEW_FRONT_BACK_CODE @@ -11647,7 +11648,10 @@ vp9_buf_ref_process_for_exception(pbi); dec_again_process(pbi); } else { - if (pbi->common.show_existing_frame) { + if (!pbi->common.show_existing_frame) { + if (pbi->has_unfinish != true) + vdec_v4l_post_error_frame_event(ctx); + } pbi->dec_result = DEC_RESULT_DONE; #ifdef NEW_FB_CODE if (pbi->front_back_mode == 1) @@ -11657,13 +11661,6 @@ amhevc_stop(); vdec_schedule_work(&pbi->work); } - else { - pbi->dec_result = DEC_RESULT_GET_DATA; - if (vdec_frame_based(hw_to_vdec(pbi))) - vdec_v4l_post_error_frame_event(ctx); - vdec_schedule_work(&pbi->work); - } - } } pbi->process_busy = 0; return IRQ_HANDLED; @@ -13275,9 +13272,15 @@ pbi->process_state = PROC_STATE_INIT; decode_frame_count[pbi->index] = pbi->frame_count; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + if (pbi->front_back_mode == 0) { + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -13338,9 +13341,15 @@ pbi->frame_count++; pbi->process_state = PROC_STATE_INIT; - if (pbi->mmu_enable) + if (pbi->mmu_enable) { pbi->used_4k_num = (READ_VREG(HEVC_SAO_MMU_STATUS) >> 16); + if (pbi->front_back_mode == 0) { + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_START); + vp9_recycle_mmu_buf_tail(pbi); + ATRACE_COUNTER(pbi->trace.decode_header_memory_time_name, TRACE_HEADER_MEMORY_END); + } + } vp9_print(pbi, PRINT_FLAG_VDEC_STATUS, "%s (===> %d) dec_result %d %x %x %x shiftbytes 0x%x decbytes 0x%x\n", __func__, @@ -13790,6 +13799,8 @@ (pbi->dec_result == DEC_RESULT_UNFINISH)) { u32 res_byte = pbi->data_size - pbi->consume_byte; + pbi->has_unfinish = true; + vp9_print(pbi, VP9_DEBUG_BUFMGR, "%s before, consume 0x%x, size 0x%x, offset 0x%x, res 0x%x\n", __func__, pbi->consume_byte, pbi->data_size, pbi->data_offset + pbi->consume_byte, res_byte); @@ -13821,6 +13832,7 @@ pbi->data_offset = pbi->chunk->offset; pbi->data_size = size; } + pbi->has_unfinish = false; WRITE_VREG(HEVC_ASSIST_SCRATCH_C, 0); }
diff --git a/firmware/A311D2/video_ucode.bin b/firmware/A311D2/video_ucode.bin index 914b08a..c47f429 100644 --- a/firmware/A311D2/video_ucode.bin +++ b/firmware/A311D2/video_ucode.bin Binary files differ
diff --git a/firmware/A311D2J/video_ucode.bin b/firmware/A311D2J/video_ucode.bin index a2e2b39..58af456 100644 --- a/firmware/A311D2J/video_ucode.bin +++ b/firmware/A311D2J/video_ucode.bin Binary files differ
diff --git a/firmware/POP1/video_ucode.bin b/firmware/POP1/video_ucode.bin index 7f3a33a..a6de262 100644 --- a/firmware/POP1/video_ucode.bin +++ b/firmware/POP1/video_ucode.bin Binary files differ
diff --git a/firmware/S805C1/video_ucode.bin b/firmware/S805C1/video_ucode.bin index 3eb4c8b..642bef0 100644 --- a/firmware/S805C1/video_ucode.bin +++ b/firmware/S805C1/video_ucode.bin Binary files differ
diff --git a/firmware/S805C1A/video_ucode.bin b/firmware/S805C1A/video_ucode.bin index 89e8b47..07cda83 100644 --- a/firmware/S805C1A/video_ucode.bin +++ b/firmware/S805C1A/video_ucode.bin Binary files differ
diff --git a/firmware/S805C1ENG/video_ucode.bin b/firmware/S805C1ENG/video_ucode.bin index 3eb4c8b..642bef0 100644 --- a/firmware/S805C1ENG/video_ucode.bin +++ b/firmware/S805C1ENG/video_ucode.bin Binary files differ
diff --git a/firmware/S805C3/video_ucode.bin b/firmware/S805C3/video_ucode.bin index 551aa68..c7f5235 100644 --- a/firmware/S805C3/video_ucode.bin +++ b/firmware/S805C3/video_ucode.bin Binary files differ
diff --git a/firmware/S805C3L/video_ucode.bin b/firmware/S805C3L/video_ucode.bin index d7e0762..a9a217d 100644 --- a/firmware/S805C3L/video_ucode.bin +++ b/firmware/S805C3L/video_ucode.bin Binary files differ
diff --git a/firmware/S805X2/video_ucode.bin b/firmware/S805X2/video_ucode.bin index 819a181..f5bd077 100644 --- a/firmware/S805X2/video_ucode.bin +++ b/firmware/S805X2/video_ucode.bin Binary files differ
diff --git a/firmware/S805X2G/video_ucode.bin b/firmware/S805X2G/video_ucode.bin index 4a5fa04..764f178 100644 --- a/firmware/S805X2G/video_ucode.bin +++ b/firmware/S805X2G/video_ucode.bin Binary files differ
diff --git a/firmware/S905C2/video_ucode.bin b/firmware/S905C2/video_ucode.bin index b9ba336..7db09de 100644 --- a/firmware/S905C2/video_ucode.bin +++ b/firmware/S905C2/video_ucode.bin Binary files differ
diff --git a/firmware/S905C2ENG/video_ucode.bin b/firmware/S905C2ENG/video_ucode.bin index 7722877..09e8986 100644 --- a/firmware/S905C2ENG/video_ucode.bin +++ b/firmware/S905C2ENG/video_ucode.bin Binary files differ
diff --git a/firmware/S905C2L/video_ucode.bin b/firmware/S905C2L/video_ucode.bin index 9b1d19d..ba9f09d 100644 --- a/firmware/S905C2L/video_ucode.bin +++ b/firmware/S905C2L/video_ucode.bin Binary files differ
diff --git a/firmware/S905C3/video_ucode.bin b/firmware/S905C3/video_ucode.bin index c3c81f2..e38e06e 100644 --- a/firmware/S905C3/video_ucode.bin +++ b/firmware/S905C3/video_ucode.bin Binary files differ
diff --git a/firmware/S905C3ENG/video_ucode.bin b/firmware/S905C3ENG/video_ucode.bin index a3cb0b0..0fc001e 100644 --- a/firmware/S905C3ENG/video_ucode.bin +++ b/firmware/S905C3ENG/video_ucode.bin Binary files differ
diff --git a/firmware/S905C3NMA/video_ucode.bin b/firmware/S905C3NMA/video_ucode.bin index f4ad452..4d79de7 100644 --- a/firmware/S905C3NMA/video_ucode.bin +++ b/firmware/S905C3NMA/video_ucode.bin Binary files differ
diff --git a/firmware/S905W2/video_ucode.bin b/firmware/S905W2/video_ucode.bin index 6f6f983..068b2f3 100644 --- a/firmware/S905W2/video_ucode.bin +++ b/firmware/S905W2/video_ucode.bin Binary files differ
diff --git a/firmware/S905X4/video_ucode.bin b/firmware/S905X4/video_ucode.bin index 694ad26..cb7dc26 100644 --- a/firmware/S905X4/video_ucode.bin +++ b/firmware/S905X4/video_ucode.bin Binary files differ
diff --git a/firmware/S905Y4/video_ucode.bin b/firmware/S905Y4/video_ucode.bin index 3604eb8..28da452 100644 --- a/firmware/S905Y4/video_ucode.bin +++ b/firmware/S905Y4/video_ucode.bin Binary files differ
diff --git a/firmware/S928X/video_ucode.bin b/firmware/S928X/video_ucode.bin index ec5b898..0ec91de 100644 --- a/firmware/S928X/video_ucode.bin +++ b/firmware/S928X/video_ucode.bin Binary files differ
diff --git a/firmware/S928XENG/video_ucode.bin b/firmware/S928XENG/video_ucode.bin index e729152..75c302f 100644 --- a/firmware/S928XENG/video_ucode.bin +++ b/firmware/S928XENG/video_ucode.bin Binary files differ
diff --git a/firmware/T950S/video_ucode.bin b/firmware/T950S/video_ucode.bin index 8158f4f..577f8cf 100644 --- a/firmware/T950S/video_ucode.bin +++ b/firmware/T950S/video_ucode.bin Binary files differ
diff --git a/firmware/T962D4/video_ucode.bin b/firmware/T962D4/video_ucode.bin index a1c8bb1..ec4899c 100644 --- a/firmware/T962D4/video_ucode.bin +++ b/firmware/T962D4/video_ucode.bin Binary files differ
diff --git a/firmware/T963D4/video_ucode.bin b/firmware/T963D4/video_ucode.bin index 7f39de0..ab01b1e 100644 --- a/firmware/T963D4/video_ucode.bin +++ b/firmware/T963D4/video_ucode.bin Binary files differ
diff --git a/firmware/T963D4ENG/video_ucode.bin b/firmware/T963D4ENG/video_ucode.bin index daabb78..9c71083 100644 --- a/firmware/T963D4ENG/video_ucode.bin +++ b/firmware/T963D4ENG/video_ucode.bin Binary files differ
diff --git a/firmware/T965D4/video_ucode.bin b/firmware/T965D4/video_ucode.bin index d0a5151..85ea9fa 100644 --- a/firmware/T965D4/video_ucode.bin +++ b/firmware/T965D4/video_ucode.bin Binary files differ
diff --git a/firmware/T968D4/video_ucode.bin b/firmware/T968D4/video_ucode.bin index 8d13140..9adbede 100644 --- a/firmware/T968D4/video_ucode.bin +++ b/firmware/T968D4/video_ucode.bin Binary files differ
diff --git a/firmware/T982/video_ucode.bin b/firmware/T982/video_ucode.bin index 67d7fca..512a8eb 100644 --- a/firmware/T982/video_ucode.bin +++ b/firmware/T982/video_ucode.bin Binary files differ
diff --git a/firmware/V918D/video_ucode.bin b/firmware/V918D/video_ucode.bin index 87e74df..beeb17c 100644 --- a/firmware/V918D/video_ucode.bin +++ b/firmware/V918D/video_ucode.bin Binary files differ
diff --git a/firmware/video_ucode.bin b/firmware/video_ucode.bin index a1c8bb1..ec4899c 100755 --- a/firmware/video_ucode.bin +++ b/firmware/video_ucode.bin Binary files differ