summaryrefslogtreecommitdiff
authorHui Zhang <hui.zhang@amlogic.com>2020-03-24 05:37:50 (GMT)
committer Hui Zhang <hui.zhang@amlogic.com>2020-03-24 05:42:51 (GMT)
commitf62b1ae65ba62fdae52696a446982c7c745fcd89 (patch)
tree1ff32575ac0adc009a030be78fa5b7ca727bd36c
parent593bd81e42d5ef1a73ab82fc55acc10d0d88706a (diff)
downloadmedia_modules-f62b1ae65ba62fdae52696a446982c7c745fcd89.zip
media_modules-f62b1ae65ba62fdae52696a446982c7c745fcd89.tar.gz
media_modules-f62b1ae65ba62fdae52696a446982c7c745fcd89.tar.bz2
vav1: add stream offset for pts lookup [1/1]
PD#SWPL-18751 Problem: duration is not correct and AV not sync Solution: add stream offset for pts lookup Verify: AB311 Signed-off-by: Hui Zhang <hui.zhang@amlogic.com> Change-Id: I71f3274b6d855744135588af7754c6721f5bf24b
Diffstat
-rwxr-xr-x[-rw-r--r--]drivers/frame_provider/decoder/vav1/av1_global.h1
-rwxr-xr-x[-rw-r--r--]drivers/frame_provider/decoder/vav1/vav1.c13
2 files changed, 6 insertions, 8 deletions
diff --git a/drivers/frame_provider/decoder/vav1/av1_global.h b/drivers/frame_provider/decoder/vav1/av1_global.h
index b8c59cc..e192091 100644..100755
--- a/drivers/frame_provider/decoder/vav1/av1_global.h
+++ b/drivers/frame_provider/decoder/vav1/av1_global.h
@@ -2112,6 +2112,7 @@ typedef struct AV1Decoder {
buff_t* mc_buf;
//unsigned short *rpm_ptr;
void *private_data;
+ u32 pre_stream_offset;
#endif
} AV1Decoder;
diff --git a/drivers/frame_provider/decoder/vav1/vav1.c b/drivers/frame_provider/decoder/vav1/vav1.c
index f1210de..466103f 100644..100755
--- a/drivers/frame_provider/decoder/vav1/vav1.c
+++ b/drivers/frame_provider/decoder/vav1/vav1.c
@@ -775,6 +775,7 @@ struct AV1HW_s {
#endif
};
+static void av1_dump_state(struct vdec_s *vdec);
int av1_print(struct AV1HW_s *hw,
int flag, const char *fmt, ...)
@@ -1217,7 +1218,6 @@ static int get_mv_buf(struct AV1HW_s *hw,
}
return ret;
}
-
static void put_mv_buf(struct AV1HW_s *hw,
int *mv_buf_index)
{
@@ -1240,7 +1240,6 @@ static void put_mv_buf(struct AV1HW_s *hw,
hw->m_mv_BUF[i].used_flag)
hw->m_mv_BUF[i].used_flag = 0;
}
-
static void put_un_used_mv_bufs(struct AV1HW_s *hw)
{
struct AV1_Common_s *const cm = &hw->pbi->common;
@@ -1254,7 +1253,6 @@ static void put_un_used_mv_bufs(struct AV1HW_s *hw)
put_mv_buf(hw, &frame_bufs[i].buf.mv_buf_index);
}
}
-
#endif
@@ -1273,8 +1271,6 @@ static int get_free_buf_count(struct AV1HW_s *hw)
return free_buf_count;
}
-
-
int aom_bufmgr_init(struct AV1HW_s *hw, struct BuffInfo_s *buf_spec_i,
struct buff_s *mc_buf_i) {
struct AV1_Common_s *cm = &hw->pbi->common;
@@ -4600,7 +4596,6 @@ static int av1_local_init(struct AV1HW_s *hw)
hw->used_buf_num = MAX_BUF_NUM_SAVE_BUF;
else
hw->used_buf_num = max_buf_num;
-
if (hw->used_buf_num > MAX_BUF_NUM)
hw->used_buf_num = MAX_BUF_NUM;
if (hw->used_buf_num > FRAME_BUFFERS)
@@ -5396,7 +5391,9 @@ static int prepare_display_buf(struct AV1HW_s *hw,
void av1_raw_write_image(AV1Decoder *pbi, PIC_BUFFER_CONFIG *sd)
{
+ sd->stream_offset = pbi->pre_stream_offset;
prepare_display_buf((struct AV1HW_s *)(pbi->private_data), sd);
+ pbi->pre_stream_offset = READ_VREG(HEVC_SHIFT_BYTE_COUNT);
}
static int notify_v4l_eos(struct vdec_s *vdec)
@@ -6959,7 +6956,8 @@ static void vav1_put_timer_func(unsigned long arg)
}
#endif
if (debug & VP9_DEBUG_DUMP_PIC_LIST) {
- dump_pic_list(hw);
+ /*dump_pic_list(hw);*/
+ av1_dump_state(hw_to_vdec(hw));
debug &= ~VP9_DEBUG_DUMP_PIC_LIST;
}
if (debug & VP9_DEBUG_TRIG_SLICE_SEGMENT_PROC) {
@@ -7630,7 +7628,6 @@ static int amvdec_av1_probe(struct platform_device *pdev)
aom_workbuff_spec[i].start_adr = pdata->mem_start;
#endif
-
if (debug) {
av1_print(hw, AOM_DEBUG_HW_MORE, "===AV1 decoder mem resource 0x%lx size 0x%x\n",
pdata->mem_start, hw->buf_size);