libdvr: support timeshift FF/FR events on playback reaching EOF/BOF [1/1]
PD#SWPL-142317
PD#OTT-49486
Problem:
Skyworth requests DTVKit need to provide events when timeshift FF/FR
reach EOF/BOF.
Solution:
Implement such function as customer request.
Verify:
Tested pass on ohm
Signed-off-by: Wentao.MA <wentao.ma@amlogic.com>
Change-Id: I609568d3846ca6ae2cfd25a91dddf61bba6f6785
diff --git a/include/dvr_playback.h b/include/dvr_playback.h
index a811c0d..94a564a 100644
--- a/include/dvr_playback.h
+++ b/include/dvr_playback.h
@@ -188,7 +188,9 @@
DVR_PLAYBACK_EVENT_NOTIFY_PLAYTIME, /**< notify play cur segment time ms*/
DVR_PLAYBACK_EVENT_FIRST_FRAME, /**< first frame*/
DVR_PLAYBACK_EVENT_NODATA, /**< no data*/
- DVR_PLAYBACK_EVENT_DATARESUME /**< data resume*/
+ DVR_PLAYBACK_EVENT_DATARESUME, /**< data resume*/
+ DVR_PLAYBACK_EVENT_TIMESHIFT_FR_REACHED_BEGIN,
+ DVR_PLAYBACK_EVENT_TIMESHIFT_FF_REACHED_END,
} DVR_PlaybackEvent_t;
/**\brief DVR playback event notify function*/
diff --git a/src/dvr_playback.c b/src/dvr_playback.c
index 037ff72..4fac6e3 100644
--- a/src/dvr_playback.c
+++ b/src/dvr_playback.c
@@ -1386,6 +1386,11 @@
DVR_PlaybackSpeed_t normal_speed = {PLAYBACK_SPEED_X1,0};
DVR_PB_INFO("Change to normal speed due to FF reaching end");
dvr_playback_set_speed((DVR_PlaybackHandle_t)player,normal_speed);
+
+ DVR_Play_Notify_t notify;
+ memset(¬ify, 0 , sizeof(DVR_Play_Notify_t));
+ notify.event = DVR_PLAYBACK_EVENT_TIMESHIFT_FF_REACHED_END;
+ _dvr_playback_sent_event((DVR_PlaybackHandle_t)player, notify.event, ¬ify, 0);
}
}
#endif
@@ -3672,17 +3677,26 @@
DVR_PlaybackSpeed_t normal_speed = {PLAYBACK_SPEED_X1,0};
DVR_PB_INFO("Change to normal speed due to FB reaching beginning");
dvr_playback_set_speed((DVR_PlaybackHandle_t)player,normal_speed);
+
+ {
+ DVR_Play_Notify_t notify;
+ memset(¬ify, 0 , sizeof(DVR_Play_Notify_t));
+ notify.event = DVR_PLAYBACK_EVENT_TIMESHIFT_FR_REACHED_BEGIN;
+ _dvr_playback_sent_event((DVR_PlaybackHandle_t)player, notify.event, ¬ify, 0);
+ }
#else
+ DVR_PB_INFO("Change to pause due to FB reaching beginning");
dvr_playback_pause(handle, DVR_FALSE);
#endif
- //send event here and pause
- DVR_Play_Notify_t notify;
- memset(¬ify, 0 , sizeof(DVR_Play_Notify_t));
- notify.event = DVR_PLAYBACK_EVENT_REACHED_BEGIN;
- //get play statue not here
- _dvr_playback_sent_event(handle, DVR_PLAYBACK_EVENT_REACHED_BEGIN, ¬ify, DVR_TRUE);
- DVR_PB_INFO("*******************send begin event speed [%f] cur [%d]", player->speed, _dvr_get_cur_time(handle));
- //change to pause
+ {
+ //send event here and pause
+ DVR_Play_Notify_t notify;
+ memset(¬ify, 0 , sizeof(DVR_Play_Notify_t));
+ notify.event = DVR_PLAYBACK_EVENT_REACHED_BEGIN;
+ //get play statue not here
+ _dvr_playback_sent_event(handle, DVR_PLAYBACK_EVENT_REACHED_BEGIN, ¬ify, DVR_TRUE);
+ DVR_PB_INFO("*******************send begin event speed [%f] cur [%d]", player->speed, _dvr_get_cur_time(handle));
+ }
return DVR_SUCCESS;
}
_dvr_playback_sent_transition_ok(handle, DVR_FALSE);
diff --git a/src/dvr_wrapper.c b/src/dvr_wrapper.c
index ce9b190..bf3eee6 100644
--- a/src/dvr_wrapper.c
+++ b/src/dvr_wrapper.c
@@ -3069,6 +3069,8 @@
case DVR_PLAYBACK_EVENT_REACHED_BEGIN:
case DVR_PLAYBACK_EVENT_NODATA:
case DVR_PLAYBACK_EVENT_DATARESUME:
+ case DVR_PLAYBACK_EVENT_TIMESHIFT_FR_REACHED_BEGIN:
+ case DVR_PLAYBACK_EVENT_TIMESHIFT_FF_REACHED_END:
{
DVR_WrapperPlaybackStatus_t status;