From 50a8b610c4f2c356c9893a8803b8caeb5a66c35f Mon Sep 17 00:00:00 2001 From: Daniel Cohen Gindi Date: Sun, 14 Dec 2014 10:16:45 +0200 Subject: [PATCH] Provide a mechanism to hint for correct duration. For cases where duration can't be calculated accurately --- StreamingKit/StreamingKit/STKDataSource.h | 1 + StreamingKit/StreamingKit/STKQueueEntry.h | 1 + StreamingKit/StreamingKit/STKQueueEntry.m | 3 +++ 3 files changed, 5 insertions(+) mode change 100644 => 100755 StreamingKit/StreamingKit/STKDataSource.h mode change 100644 => 100755 StreamingKit/StreamingKit/STKQueueEntry.h mode change 100644 => 100755 StreamingKit/StreamingKit/STKQueueEntry.m diff --git a/StreamingKit/StreamingKit/STKDataSource.h b/StreamingKit/StreamingKit/STKDataSource.h old mode 100644 new mode 100755 index 69c2961..15c3c34 --- a/StreamingKit/StreamingKit/STKDataSource.h +++ b/StreamingKit/StreamingKit/STKDataSource.h @@ -48,6 +48,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;