diff --git a/StreamingKit/StreamingKit/STKDataSource.h b/StreamingKit/StreamingKit/STKDataSource.h old mode 100644 new mode 100755 index d99da2b..2565f5d --- a/StreamingKit/StreamingKit/STKDataSource.h +++ b/StreamingKit/StreamingKit/STKDataSource.h @@ -49,6 +49,7 @@ @property (readonly) SInt64 position; @property (readonly) SInt64 length; @property (readonly) BOOL hasBytesAvailable; +@property (nonatomic, readwrite, assign) double durationHint; @property (readwrite, unsafe_unretained) id delegate; -(BOOL) registerForEvents:(NSRunLoop*)runLoop; diff --git a/StreamingKit/StreamingKit/STKQueueEntry.h b/StreamingKit/StreamingKit/STKQueueEntry.h old mode 100644 new mode 100755 index 78e3784..3ae6f6a --- a/StreamingKit/StreamingKit/STKQueueEntry.h +++ b/StreamingKit/StreamingKit/STKQueueEntry.h @@ -28,6 +28,7 @@ volatile int processedPacketsCount; volatile int processedPacketsSizeTotal; AudioStreamBasicDescription audioStreamBasicDescription; + double durationHint; } @property (readonly) UInt64 audioDataLengthInBytes; diff --git a/StreamingKit/StreamingKit/STKQueueEntry.m b/StreamingKit/StreamingKit/STKQueueEntry.m old mode 100644 new mode 100755 index 2b6de04..250b0c1 --- a/StreamingKit/StreamingKit/STKQueueEntry.m +++ b/StreamingKit/StreamingKit/STKQueueEntry.m @@ -23,6 +23,7 @@ self.dataSource = dataSourceIn; self.queueItemId = queueItemIdIn; self->lastFrameQueued = -1; + self->durationHint = dataSourceIn.durationHint; } return self; @@ -60,6 +61,8 @@ -(double) duration { + if (durationHint > 0.0) return durationHint; + if (self->sampleRate <= 0) { return 0;