diff --git a/StreamingKit/StreamingKit/STKAudioPlayer.h b/StreamingKit/StreamingKit/STKAudioPlayer.h index c926070..f1d3cd5 100644 --- a/StreamingKit/StreamingKit/STKAudioPlayer.h +++ b/StreamingKit/StreamingKit/STKAudioPlayer.h @@ -62,6 +62,7 @@ typedef enum STKAudioPlayerStopReasonNone = 0, STKAudioPlayerStopReasonEof, STKAudioPlayerStopReasonUserAction, + STKAudioPlayerStopReasonPendingNext, STKAudioPlayerStopReasonError = 0xffff } STKAudioPlayerStopReason; diff --git a/StreamingKit/StreamingKit/STKAudioPlayer.m b/StreamingKit/StreamingKit/STKAudioPlayer.m index 2f26bf4..73fbbc7 100644 --- a/StreamingKit/StreamingKit/STKAudioPlayer.m +++ b/StreamingKit/StreamingKit/STKAudioPlayer.m @@ -679,6 +679,8 @@ static void AudioFileStreamPacketsProc(void* clientData, UInt32 numberBytes, UIn [upcomingQueue enqueue:[[STKQueueEntry alloc] initWithDataSource:dataSourceIn andQueueItemId:queueItemId]]; + [self stopAudioUnitWithReason:STKAudioPlayerStopReasonPendingNext]; + self.internalState = STKAudioPlayerInternalStatePendingNext; } pthread_mutex_unlock(&playerMutex); @@ -1061,6 +1063,7 @@ static void AudioFileStreamPacketsProc(void* clientData, UInt32 numberBytes, UIn OSSpinLockUnlock(¤tEntryReferencesLock); currentlyReadingEntry.dataSource.delegate = self; + [currentlyReadingEntry.dataSource close]; [currentlyReadingEntry.dataSource registerForEvents:[NSRunLoop currentRunLoop]]; [currentlyReadingEntry.dataSource seekToOffset:0]; diff --git a/StreamingKit/StreamingKit/STKAutoRecoveringHTTPDataSource.m b/StreamingKit/StreamingKit/STKAutoRecoveringHTTPDataSource.m index acbc85f..fc65774 100644 --- a/StreamingKit/StreamingKit/STKAutoRecoveringHTTPDataSource.m +++ b/StreamingKit/StreamingKit/STKAutoRecoveringHTTPDataSource.m @@ -43,8 +43,8 @@ #import #import "STKAutoRecoveringHTTPDataSource.h" -#define DEFAULT_WATCHDOG_PERIOD_SECONDS (5) -#define DEFAULT_INACTIVE_PERIOD_BEFORE_RECONNECT_SECONDS (5) +#define DEFAULT_WATCHDOG_PERIOD_SECONDS (8) +#define DEFAULT_INACTIVE_PERIOD_BEFORE_RECONNECT_SECONDS (15) static uint64_t GetTickCount(void) { @@ -165,6 +165,8 @@ static void PopulateOptionsWithDefault(STKAutoRecoveringHTTPDataSourceOptions* o timeoutTimer = nil; } + ticksWhenLastDataReceived = GetTickCount(); + [self createTimeoutTimer]; return YES; @@ -244,6 +246,13 @@ static void PopulateOptionsWithDefault(STKAutoRecoveringHTTPDataSourceOptions* o return NO; } +-(void) seekToOffset:(long long)offset +{ + ticksWhenLastDataReceived = GetTickCount(); + + [super seekToOffset:offset]; +} + -(void) close { [self destroyTimeoutTimer];