author | jintao 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) |
commit | 30856005353594345004fb733f91a3e4680fc6ac (patch) | |
tree | 81df40e7431eea4bf6d500b7b2aac93d2df353c8 | |
parent | 7ddc18520b40262aa15f7238b8dccf3536911def (diff) | |
download | common-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>
-rw-r--r-- | drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c | 10 | ||||
-rw-r--r-- | drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.h | 1 | ||||
-rw-r--r-- | drivers/amlogic/media/video_sink/video.c | 3 |
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) { |