Upstream producer of sample streams, taking Buffers as external context.
Describes an input source for DownmixStage Decorates an AudioGraph::Source with operations that are n...
virtual AudioGraph::Source & GetDownstream() const =0
Returns underlying AudioGraph::Source processed by Mixer.
virtual bool CanMakeMono() const =0
Returns true if source channels could be combined into mono if needed.
virtual float GetChannelGain(size_t channel) const =0
Gain multiplier that should be applied to the channel.
virtual size_t NChannels() const =0
Number of output channels of the underlying Source.
virtual void FindChannelFlags(unsigned char *channelFlags, size_t numChannels, size_t iChannel)=0
virtual ~DownmixSource()=default
void FindChannelFlags(unsigned char *channelFlags, size_t numChannels, size_t iChannel) override
bool CanMakeMono() const override
Returns true if source channels could be combined into mono if needed.
const WideSampleSequence & mSequence
SequenceDownmixSource(AudioGraph::Source &downstream, const WideSampleSequence &sequence, const ArrayOf< bool > *channelMap)
size_t NChannels() const override
Number of output channels of the underlying Source.
AudioGraph::Source & mDownstream
const ArrayOf< bool > * mpMap
float GetChannelGain(size_t channel) const override
Gain multiplier that should be applied to the channel.
AudioGraph::Source & GetDownstream() const override
Returns underlying AudioGraph::Source processed by Mixer.
AudioGraph::Source & GetDownstream() const override
Returns underlying AudioGraph::Source processed by Mixer.
SimpleDonwmixSource(AudioGraph::Source &downstream, size_t channels)
size_t NChannels() const override
Number of output channels of the underlying Source.
float GetChannelGain(size_t channel) const override
Gain multiplier that should be applied to the channel.
void FindChannelFlags(unsigned char *channelFlags, size_t numChannels, size_t iChannel) override
AudioGraph::Source & mDownstream
bool CanMakeMono() const override
Returns true if source channels could be combined into mono if needed.