2 * 11/19/04 1.0 moved to LGPL.
3 * 12/12/99 Initial implementation. mdm@techie.com.
4 *-----------------------------------------------------------------------
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Library General Public License as published
7 * by the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *----------------------------------------------------------------------
22 * A Type-safe representation of the the supported output channel constants.
24 * This class is immutable and, hence, is thread safe.
26 * @author Mat McGowan 12/12/99
30 @METHODDEFAULT("OUT<THIS,THIS<IN,THISLOC=THIS,RETURNLOC=OUT")
31 public class OutputChannels {
33 * Flag to indicate output should include both channels.
35 public static final int BOTH_CHANNELS = 0;
38 * Flag to indicate output should include the left channel only.
40 public static final int LEFT_CHANNEL = 1;
43 * Flag to indicate output should include the right channel only.
45 public static final int RIGHT_CHANNEL = 2;
48 * Flag to indicate output is mono.
50 public static final int DOWNMIX_CHANNELS = 3;
52 public static final OutputChannels LEFT = new OutputChannels(LEFT_CHANNEL);
53 public static final OutputChannels RIGHT = new OutputChannels(RIGHT_CHANNEL);
54 public static final OutputChannels BOTH = new OutputChannels(BOTH_CHANNELS);
55 public static final OutputChannels DOWNMIX = new OutputChannels(DOWNMIX_CHANNELS);
58 private/* final */int outputChannels;
61 * Creates an <code>OutputChannels</code> instance corresponding to the given
65 * one of the OutputChannels channel code constants.
67 * @throws IllegalArgumentException
68 * if code is not a valid channel code.
70 static public OutputChannels fromInt(int code) {
78 case DOWNMIX_CHANNELS:
81 throw new IllegalArgumentException("Invalid channel code: " + code);
85 public OutputChannels(@LOC("IN") int channels) {
86 outputChannels = channels;
88 if (channels < 0 || channels > 3)
89 throw new IllegalArgumentException("channels");
93 * Retrieves the code representing the desired output channels. Will be one of
94 * LEFT_CHANNEL, RIGHT_CHANNEL, BOTH_CHANNELS or DOWNMIX_CHANNELS.
96 * @return the channel code represented by this instance.
98 public int getChannelsOutputCode() {
99 return outputChannels;
103 * Retrieves the number of output channels represented by this channel output
106 * @return The number of output channels for this channel output type. This
107 * will be 2 for BOTH_CHANNELS only, and 1 for all other types.
109 public int getChannelCount() {
110 int count = (outputChannels == BOTH_CHANNELS) ? 2 : 1;
114 public boolean equals(Object o) {
115 boolean equals = false;
117 if (o instanceof OutputChannels) {
118 OutputChannels oc = (OutputChannels) o;
119 equals = (oc.outputChannels == outputChannels);
125 public int hashCode() {
126 return outputChannels;