34 #ifndef __CU_AUDIO_PANNER_H__
35 #define __CU_AUDIO_PANNER_H__
36 #include "CUAudioNode.h"
72 std::shared_ptr<AudioNode> _input;
74 std::atomic<float>* _mapper;
77 #pragma mark Constructors
107 virtual bool init()
override;
121 virtual bool init(Uint8 channels, Uint32 rate)
override;
137 bool init(Uint8 channels, Uint8 field, Uint32 rate);
145 virtual void dispose()
override;
148 #pragma mark Static Constructors
161 static std::shared_ptr<AudioPanner>
alloc() {
162 std::shared_ptr<AudioPanner> result = std::make_shared<AudioPanner>();
163 return (result->init() ? result :
nullptr);
178 static std::shared_ptr<AudioPanner>
alloc(Uint8 channels, Uint32 rate) {
179 std::shared_ptr<AudioPanner> result = std::make_shared<AudioPanner>();
180 return (result->init(channels,rate) ? result :
nullptr);
197 static std::shared_ptr<AudioPanner>
alloc(Uint8 channels, Uint8 field, Uint32 rate) {
198 std::shared_ptr<AudioPanner> result = std::make_shared<AudioPanner>();
199 return (result->init(channels,field,rate) ? result :
nullptr);
203 #pragma mark Audio Graph
214 bool attach(
const std::shared_ptr<AudioNode>& node);
223 std::shared_ptr<AudioNode>
detach();
230 std::shared_ptr<AudioNode>
getInput()
const {
return _input; }
248 float getPan(Uint32 field, Uint32 channel)
const;
261 void setPan(Uint32 field, Uint32 channel,
float value);
264 #pragma mark Playback Control
295 virtual Uint32
read(
float* buffer, Uint32 frames)
override;
298 #pragma mark Optional Methods
316 virtual bool mark()
override;
332 virtual bool unmark()
override;
349 virtual bool reset()
override;
366 virtual Sint64
advance(Uint32 frames)
override;
400 virtual Sint64
setPosition(Uint32 position)
override;
434 virtual double setElapsed(
double time)
override;