File: AudioGraphChannel.h

package info (click to toggle)
audacity 3.7.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 125,252 kB
  • sloc: cpp: 358,238; ansic: 75,458; lisp: 7,761; sh: 3,410; python: 1,503; xml: 1,385; perl: 854; makefile: 122
file content (49 lines) | stat: -rw-r--r-- 1,262 bytes parent folder | download | duplicates (2)
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