1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
/**********************************************************************
Audacity: A Digital Audio Editor
@file AudioGraphChannel.h
@brief Abstraction of a channel of a wide stream that knows whether it is mono,
left, or right
Paul Licameli
**********************************************************************/
#ifndef __AUDACITY_AUDIO_GRAPH_CHANNEL__
#define __AUDACITY_AUDIO_GRAPH_CHANNEL__
namespace AudioGraph {
//! Mutually exclusive channel classifications
enum ChannelType : unsigned
{
MonoChannel,
LeftChannel,
RightChannel,
};
struct AUDIO_GRAPH_API Channel {
virtual ~Channel();
//! Classify this channel
virtual ChannelType GetChannelType() const = 0;
};
//! Whether the channel is mono
inline bool IsMono(const Channel &channel) {
return channel.GetChannelType() == MonoChannel;
}
//! Whether the channel may play through a left speaker
inline bool PlaysLeft(const Channel &channel) {
const auto type = channel.GetChannelType();
return type == MonoChannel || type == LeftChannel;
}
//! Whether the channel may play through a right speaker
inline bool PlaysRight(const Channel &channel) {
const auto type = channel.GetChannelType();
return type == MonoChannel || type == RightChannel;
}
}
#endif
|