// // ChunkList.h // CogAudio Framework // // Created by Christopher Snowhill on 2/5/22. // #import #import #import "AudioChunk.h" #import NS_ASSUME_NONNULL_BEGIN #define DSD_DECIMATE 1 @interface ChunkList : NSObject { NSMutableArray *chunkList; double listDuration; double maxDuration; BOOL inAdder; BOOL inRemover; BOOL inPeeker; BOOL stopping; // For format converter void *inputBuffer; size_t inputBufferSize; #if DSD_DECIMATE void **dsd2pcm; size_t dsd2pcmCount; int dsd2pcmLatency; #endif void *hdcd_decoder; BOOL formatRead; AudioStreamBasicDescription inputFormat; AudioStreamBasicDescription floatFormat; uint32_t inputChannelConfig; BOOL inputLossless; uint8_t *tempData; size_t tempDataSize; } @property(readonly) double listDuration; @property(readonly) double maxDuration; - (id)initWithMaximumDuration:(double)duration; - (void)reset; - (BOOL)isEmpty; - (BOOL)isFull; - (void)addChunk:(AudioChunk *)chunk; - (AudioChunk *)removeSamples:(size_t)maxFrameCount; - (AudioChunk *)removeSamplesAsFloat32:(size_t)maxFrameCount; - (BOOL)peekFormat:(nonnull AudioStreamBasicDescription *)format channelConfig:(nonnull uint32_t *)config; @end NS_ASSUME_NONNULL_END