2007-10-03 20:23:14 +00:00
|
|
|
//
|
|
|
|
// ConverterNode.h
|
|
|
|
// Cog
|
|
|
|
//
|
|
|
|
// Created by Zaphod Beeblebrox on 8/2/05.
|
|
|
|
// Copyright 2005 __MyCompanyName__. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#import <Cocoa/Cocoa.h>
|
|
|
|
|
|
|
|
#import <CoreAudio/AudioHardware.h>
|
|
|
|
#import <AudioToolbox/AudioToolbox.h>
|
|
|
|
#import <AudioUnit/AudioUnit.h>
|
|
|
|
|
2022-01-11 12:00:34 +00:00
|
|
|
#import <audio/audio_resampler.h>
|
|
|
|
|
2007-10-03 20:23:14 +00:00
|
|
|
#import "Node.h"
|
2022-01-14 03:43:18 +00:00
|
|
|
#import "RefillNode.h"
|
2007-10-03 20:23:14 +00:00
|
|
|
|
|
|
|
@interface ConverterNode : Node {
|
2013-10-07 10:59:04 +00:00
|
|
|
NSDictionary * rgInfo;
|
2022-01-11 12:00:34 +00:00
|
|
|
|
|
|
|
void *resampler_data;
|
|
|
|
const retro_resampler_t *resampler;
|
2013-10-07 10:59:04 +00:00
|
|
|
|
2022-01-11 12:00:34 +00:00
|
|
|
void *inputBuffer;
|
|
|
|
size_t inputBufferSize;
|
|
|
|
size_t inpSize, inpOffset;
|
2021-12-25 23:02:13 +00:00
|
|
|
|
2021-12-26 07:41:45 +00:00
|
|
|
BOOL stopping;
|
|
|
|
BOOL convertEntered;
|
2022-01-13 07:13:00 +00:00
|
|
|
BOOL paused;
|
|
|
|
BOOL outputFormatChanged;
|
2022-01-11 12:00:34 +00:00
|
|
|
|
|
|
|
BOOL skipResampler;
|
|
|
|
|
|
|
|
ssize_t latencyStarted;
|
|
|
|
size_t latencyEaten;
|
|
|
|
BOOL latencyPostfill;
|
2021-12-26 07:41:45 +00:00
|
|
|
|
2022-01-11 12:00:34 +00:00
|
|
|
double sampleRatio;
|
2013-10-07 07:24:26 +00:00
|
|
|
|
2013-10-07 10:59:04 +00:00
|
|
|
float volumeScale;
|
|
|
|
|
|
|
|
void *floatBuffer;
|
2021-12-25 23:02:13 +00:00
|
|
|
size_t floatBufferSize;
|
2022-01-11 12:00:34 +00:00
|
|
|
size_t floatSize, floatOffset;
|
2022-01-14 07:03:53 +00:00
|
|
|
|
|
|
|
size_t floatConvertedSize;
|
|
|
|
float floatConvertedLast[CHUNK_SIZE];
|
2022-01-14 10:00:32 +00:00
|
|
|
|
|
|
|
void *extrapolateBuffer;
|
|
|
|
size_t extrapolateBufferSize;
|
2007-10-03 20:23:14 +00:00
|
|
|
|
|
|
|
AudioStreamBasicDescription inputFormat;
|
2013-10-07 10:59:04 +00:00
|
|
|
AudioStreamBasicDescription floatFormat;
|
2022-01-11 12:00:34 +00:00
|
|
|
AudioStreamBasicDescription dmFloatFormat; // downmixed/upmixed float format
|
2007-10-03 20:23:14 +00:00
|
|
|
AudioStreamBasicDescription outputFormat;
|
2022-01-14 03:43:18 +00:00
|
|
|
|
|
|
|
AudioStreamBasicDescription previousOutputFormat;
|
|
|
|
AudioStreamBasicDescription rememberedInputFormat;
|
|
|
|
RefillNode *refillNode;
|
|
|
|
id __weak originalPreviousNode;
|
2007-10-03 20:23:14 +00:00
|
|
|
}
|
|
|
|
|
2013-10-11 03:02:02 +00:00
|
|
|
- (id)initWithController:(id)c previous:(id)p;
|
2013-10-07 10:59:04 +00:00
|
|
|
|
2007-10-03 20:23:14 +00:00
|
|
|
- (BOOL)setupWithInputFormat:(AudioStreamBasicDescription)inputFormat outputFormat:(AudioStreamBasicDescription)outputFormat;
|
|
|
|
- (void)cleanUp;
|
|
|
|
|
|
|
|
- (void)process;
|
|
|
|
- (int)convert:(void *)dest amount:(int)amount;
|
|
|
|
|
2013-10-07 10:59:04 +00:00
|
|
|
- (void)setRGInfo:(NSDictionary *)rgi;
|
|
|
|
|
2007-10-12 02:55:59 +00:00
|
|
|
- (void)setOutputFormat:(AudioStreamBasicDescription)format;
|
|
|
|
|
|
|
|
- (void)inputFormatDidChange:(AudioStreamBasicDescription)format;
|
|
|
|
|
2013-10-07 10:59:04 +00:00
|
|
|
- (void)refreshVolumeScaling;
|
|
|
|
|
2007-10-03 20:23:14 +00:00
|
|
|
@end
|