summaryrefslogtreecommitdiff
authorjintao xu <jintao.xu@amlogic.com>2020-05-19 09:11:31 (GMT)
committer Shen Liu <shen.liu@amlogic.com>2020-05-20 01:57:25 (GMT)
commit30856005353594345004fb733f91a3e4680fc6ac (patch)
tree81df40e7431eea4bf6d500b7b2aac93d2df353c8
parent7ddc18520b40262aa15f7238b8dccf3536911def (diff)
downloadcommon-30856005353594345004fb733f91a3e4680fc6ac.zip
common-30856005353594345004fb733f91a3e4680fc6ac.tar.gz
common-30856005353594345004fb733f91a3e4680fc6ac.tar.bz2
ppmgr: fix omx freeze when reset [1/1]
PD#OTT-9969 Problem: omx can not set omx pts after reset Solution: set omx pts after reset https://scgit.amlogic.com/#/c/98429/ https://scgit.amlogic.com/#/c/101180/ Verify: U212 Change-Id: I6a38af4d90c9e150024b29db6adb4b0850c0502c Signed-off-by: jintao xu <jintao.xu@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c10
-rw-r--r--drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.h1
-rw-r--r--drivers/amlogic/media/video_sink/video.c3
3 files changed, 9 insertions, 5 deletions
diff --git a/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c b/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c
index f31bc7d..14f7ed6 100644
--- a/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c
+++ b/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c
@@ -3255,13 +3255,15 @@ SKIP_DETECT:
}
}
/***recycle buffer to decoder***/
- vf_local_init();
- vf_light_unreg_provider(&ppmgr_vf_prov);
- msleep(30);
+ PPMGRVPP_WARN("ppmgr rebuild light-unregister_1\n");
+ vf_unreg_provider(&ppmgr_vf_prov);
+ omx_cur_session = 0xffffffff;
+ usleep_range(4000, 5000);
vf_reg_provider(&ppmgr_vf_prov);
+ vf_local_init();
ppmgr_blocking = false;
up(&thread_sem);
- PPMGRVPP_WARN("ppmgr rebuild from light-unregister\n");
+ PPMGRVPP_WARN("ppmgr rebuild light-unregister_2\n");
}
#ifdef DDD
diff --git a/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.h b/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.h
index 1939527..b03839a 100644
--- a/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.h
+++ b/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.h
@@ -62,6 +62,7 @@ extern enum platform_type_t get_platform_type(void);
extern u32 timestamp_pcrscr_enable_state(void);
+extern u32 omx_cur_session;
#endif
diff --git a/drivers/amlogic/media/video_sink/video.c b/drivers/amlogic/media/video_sink/video.c
index 6d42429..450f4d2 100644
--- a/drivers/amlogic/media/video_sink/video.c
+++ b/drivers/amlogic/media/video_sink/video.c
@@ -135,7 +135,7 @@ static int omx_pts_dv_upper = OMX_PTS_DV_DEFAULT_UPPER;
static int omx_pts_dv_lower = OMX_PTS_DV_DEFAULT_LOWER;
static int omx_pts_set_from_hwc_count;
static bool omx_check_previous_session;
-static u32 omx_cur_session = 0xffffffff;
+u32 omx_cur_session = 0xffffffff;
static int drop_frame_count;
static int last_drop_frame_count;
#define OMX_MAX_COUNT_RESET_SYSTEMTIME 2
@@ -7103,6 +7103,7 @@ static int video_receiver_event_fun(int type, void *data, void *private_data)
} else if (type == VFRAME_EVENT_PROVIDER_RESET) {
video_vf_light_unreg_provider(1);
+ omx_cur_session = 0xffffffff;
} else if (type == VFRAME_EVENT_PROVIDER_LIGHT_UNREG)
video_vf_light_unreg_provider(0);
else if (type == VFRAME_EVENT_PROVIDER_REG) {