@@ -121,6 +121,7 @@ function EventController() {
121121 let event = values [ i ] ;
122122 inlineEvents [ event . id ] = event ;
123123 logger . debug ( 'Add inline event with id ' + event . id ) ;
124+ _startEvent ( event . id , event , values ) ;
124125 }
125126 }
126127 logger . debug ( `Added ${ values . length } inline events` ) ;
@@ -145,6 +146,7 @@ function EventController() {
145146 }
146147 inbandEvents [ event . id ] = event ;
147148 logger . debug ( 'Add inband event with id ' + event . id ) ;
149+ _startEvent ( event . id , event , values ) ;
148150 } else {
149151 logger . debug ( 'Repeated event with id ' + event . id ) ;
150152 }
@@ -207,6 +209,7 @@ function EventController() {
207209 function _onEventTimer ( ) {
208210 try {
209211 if ( ! eventHandlingInProgress ) {
212+ eventHandlingInProgress = true ;
210213 const currentVideoTime = playbackController . getTime ( ) ;
211214 let presentationTimeThreshold = ( currentVideoTime - lastEventTimerCall ) ;
212215
@@ -218,8 +221,8 @@ function EventController() {
218221 _removeEvents ( ) ;
219222
220223 lastEventTimerCall = currentVideoTime ;
224+ eventHandlingInProgress = false ;
221225 }
222- eventHandlingInProgress = false ;
223226 } catch ( e ) {
224227 eventHandlingInProgress = false ;
225228 }
@@ -310,8 +313,10 @@ function EventController() {
310313 function _startEvent ( eventId , event , events ) {
311314 try {
312315 const currentVideoTime = playbackController . getTime ( ) ;
316+ const calculatedPresentationTimeInSeconds = event . calculatedPresentationTime / event . eventStream . timescale ;
317+ const isEventStart = Math . floor ( currentVideoTime ) === calculatedPresentationTimeInSeconds ;
313318
314- if ( event . duration > 0 ) {
319+ if ( isEventStart && event . duration > 0 ) {
315320 activeEvents [ eventId ] = event ;
316321 }
317322
@@ -325,10 +330,10 @@ function EventController() {
325330 _sendCallbackRequest ( event . messageData ) ;
326331 } else {
327332 logger . debug ( `Starting event ${ eventId } at ${ currentVideoTime } ` ) ;
328- eventBus . trigger ( event . eventStream . schemeIdUri , { event : event } ) ;
333+ eventBus . trigger ( event . eventStream . schemeIdUri , { event : event } , { isEventStart } ) ;
329334 }
330335
331- delete events [ eventId ] ;
336+ if ( isEventStart ) delete events [ eventId ] ;
332337 } catch ( e ) {
333338 }
334339 }
0 commit comments