70 lines
1.2 KiB
Objective-C
70 lines
1.2 KiB
Objective-C
//
|
|
// ChunkList.h
|
|
// CogAudio Framework
|
|
//
|
|
// Created by Christopher Snowhill on 2/5/22.
|
|
//
|
|
|
|
#import <CoreAudio/CoreAudio.h>
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#import "AudioChunk.h"
|
|
|
|
#import "Semaphore.h"
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
#define DSD_DECIMATE 1
|
|
|
|
@interface ChunkList : NSObject {
|
|
NSMutableArray<AudioChunk *> *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;
|
|
}
|
|
|
|
@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
|