1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-03 11:30:02 +00:00

Added documentation and experimentally reduced packet size. We'll see.

This commit is contained in:
Thomas Harte 2016-10-10 07:42:24 -04:00
parent de397799ed
commit f4b39c4435
2 changed files with 32 additions and 1 deletions

View File

@ -14,15 +14,46 @@
- (void)audioQueueDidCompleteBuffer:(nonnull CSAudioQueue *)audioQueue;
@end
/*!
CSAudioQueue provides an audio queue to which packets of arbitrary size may be appended;
it can notify a delegate each time a buffer is completed and offer advice as to the preferred
output sampling rate and a manageable buffer size for this machine.
*/
@interface CSAudioQueue : NSObject
/*!
Creates an instance of CSAudioQueue.
@param samplingRate The output audio rate.
@returns An instance of CSAudioQueue if successful; @c nil otherwise.
*/
- (nonnull instancetype)initWithSamplingRate:(Float64)samplingRate;
/*!
Enqueues a buffer for playback.
@param buffer A pointer to the data that comprises the buffer.
@param lengthInSamples The length of the buffer, in samples.
*/
- (void)enqueueAudioBuffer:(nonnull const int16_t *)buffer numberOfSamples:(size_t)lengthInSamples;
/// @returns The sampling rate at which this queue is playing audio.
@property (nonatomic, readonly) Float64 samplingRate;
/// A delegate, if set, will receive notification upon the completion of each enqueue buffer.
@property (nonatomic, weak, nullable) id<CSAudioQueueDelegate> delegate;
/*!
@returns The ideal output sampling rate for this computer; likely to be 44.1Khz or
48Khz or 96Khz or one of the other comon numbers but not guaranteed to be.
*/
+ (Float64)preferredSamplingRate;
/*!
@returns A selected preferred buffer size (in samples). If an owner cannot otherwise
decide in what size to enqueue audio, this is a helpful suggestion.
*/
@property (nonatomic, readonly) NSUInteger preferredBufferSize;
@end

View File

@ -44,7 +44,7 @@ static void audioOutputCallback(
// determine preferred buffer sizes
_preferredBufferSize = AudioQueueBufferMaxLength;
while((Float64)_preferredBufferSize*50.0 > samplingRate) _preferredBufferSize >>= 1;
while((Float64)_preferredBufferSize*100.0 > samplingRate) _preferredBufferSize >>= 1;
/*
Describe a mono 16bit stream of the requested sampling rate