/* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial implementation. mdm@techie.com. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ /** * A Type-safe representation of the the supported output channel constants. * * This class is immutable and, hence, is thread safe. * * @author Mat McGowan 12/12/99 * @since 0.0.7 */ @LATTICE("BOutputChannels instance corresponding to the given * channel code. * * @param code * one of the OutputChannels channel code constants. * * @throws IllegalArgumentException * if code is not a valid channel code. */ static public OutputChannels fromInt(int code) { switch (code) { case LEFT_CHANNEL: return LEFT; case RIGHT_CHANNEL: return RIGHT; case BOTH_CHANNELS: return BOTH; case DOWNMIX_CHANNELS: return DOWNMIX; default: throw new IllegalArgumentException("Invalid channel code: " + code); } } public OutputChannels(@LOC("IN") int channels) { outputChannels = channels; if (channels < 0 || channels > 3) throw new IllegalArgumentException("channels"); } /** * Retrieves the code representing the desired output channels. Will be one of * LEFT_CHANNEL, RIGHT_CHANNEL, BOTH_CHANNELS or DOWNMIX_CHANNELS. * * @return the channel code represented by this instance. */ public int getChannelsOutputCode() { return outputChannels; } /** * Retrieves the number of output channels represented by this channel output * type. * * @return The number of output channels for this channel output type. This * will be 2 for BOTH_CHANNELS only, and 1 for all other types. */ public int getChannelCount() { int count = (outputChannels == BOTH_CHANNELS) ? 2 : 1; return count; } public boolean equals(Object o) { boolean equals = false; if (o instanceof OutputChannels) { OutputChannels oc = (OutputChannels) o; equals = (oc.outputChannels == outputChannels); } return equals; } public int hashCode() { return outputChannels; } }