@@ -7,6 +7,7 @@ const STATE_READ_INDEX = 2;
77const STATE_WRITE_INDEX = 3 ;
88const STATE_PLAYBACK_INDEX = 4 ;
99const STATE_PAUSE_AT_INDEX = 5 ;
10+ const STATE_SEEK_GENERATION = 6 ;
1011
1112const RING_BUFFER_CAPACITY = 192000 * 2 ;
1213const RING_BUFFER_BYTES_PER_CHANNEL = RING_BUFFER_CAPACITY * 4 ;
@@ -122,6 +123,7 @@ export interface AudioReader {
122123 getPauseAtIndex ( ) : number ;
123124 clearPauseAtIndex ( ) : void ;
124125 pausePlayback ( ) : void ;
126+ getSeekGeneration ( ) : number ;
125127}
126128//#endregion
127129
@@ -222,6 +224,7 @@ class AudioQueueCore implements MainAudioController, AudioWriter, AudioReader {
222224 Atomics . store ( this . controlBlock , STATE_WRITE_INDEX , 0 ) ;
223225 Atomics . store ( this . controlBlock , STATE_READ_INDEX , 0 ) ;
224226 Atomics . store ( this . controlBlock , STATE_PLAYBACK_INDEX , 0 ) ;
227+ Atomics . add ( this . controlBlock , STATE_SEEK_GENERATION , 1 ) ;
225228 Atomics . notify ( this . controlBlock , STATE_READ_INDEX , 1 ) ;
226229 }
227230
@@ -266,6 +269,10 @@ class AudioQueueCore implements MainAudioController, AudioWriter, AudioReader {
266269
267270 return { isDrained : false } ;
268271 }
272+
273+ getSeekGeneration ( ) : number {
274+ return Atomics . load ( this . controlBlock , STATE_SEEK_GENERATION ) ;
275+ }
269276 //#endregion
270277
271278 //#region AudioReader
0 commit comments