|  | /* | 
|  | * Copyright (C) 2014 The Android Open Source Project | 
|  | * | 
|  | * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | * you may not use this file except in compliance with the License. | 
|  | * You may obtain a copy of the License at | 
|  | * | 
|  | *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, software | 
|  | * distributed under the License is distributed on an "AS IS" BASIS, | 
|  | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | * See the License for the specific language governing permissions and | 
|  | * limitations under the License. | 
|  | */ | 
|  |  | 
|  | package android.media; | 
|  |  | 
|  | /** | 
|  | * An AudioPortConfig contains a possible configuration of an audio port chosen | 
|  | * among all possible attributes described by an AudioPort. | 
|  | * An AudioPortConfig is created by AudioPort.buildConfiguration(). | 
|  | * AudioPorts are used to specify the sources and sinks of a patch created | 
|  | * with AudioManager.connectAudioPatch(). | 
|  | * Several specialized versions of AudioPortConfig exist to handle different categories of | 
|  | * audio ports and their specific attributes: | 
|  | * - AudioDevicePortConfig for input (e.g micropohone) and output devices (e.g speaker) | 
|  | * - AudioMixPortConfig for input or output streams of the audio framework. | 
|  | * @hide | 
|  | */ | 
|  |  | 
|  | public class AudioPortConfig { | 
|  | final AudioPort mPort; | 
|  | private final int mSamplingRate; | 
|  | private final int mChannelMask; | 
|  | private final int mFormat; | 
|  | private final AudioGainConfig mGain; | 
|  |  | 
|  | // mConfigMask indicates which fields in this configuration should be | 
|  | // taken into account. Used with AudioSystem.setAudioPortConfig() | 
|  | // framework use only. | 
|  | static final int SAMPLE_RATE  = 0x1; | 
|  | static final int CHANNEL_MASK = 0x2; | 
|  | static final int FORMAT       = 0x4; | 
|  | static final int GAIN         = 0x8; | 
|  | int mConfigMask; | 
|  |  | 
|  | AudioPortConfig(AudioPort port, int samplingRate, int channelMask, int format, | 
|  | AudioGainConfig gain) { | 
|  | mPort = port; | 
|  | mSamplingRate = samplingRate; | 
|  | mChannelMask = channelMask; | 
|  | mFormat = format; | 
|  | mGain = gain; | 
|  | mConfigMask = 0; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Returns the audio port this AudioPortConfig is issued from. | 
|  | */ | 
|  | public AudioPort port() { | 
|  | return mPort; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Sampling rate configured for this AudioPortConfig. | 
|  | */ | 
|  | public int samplingRate() { | 
|  | return mSamplingRate; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Channel mask configuration (e.g AudioFormat.CHANNEL_CONFIGURATION_STEREO). | 
|  | */ | 
|  | public int channelMask() { | 
|  | return mChannelMask; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Audio format configuration (e.g AudioFormat.ENCODING_PCM_16BIT). | 
|  | */ | 
|  | public int format() { | 
|  | return mFormat; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * The gain configuration if this port supports gain control, null otherwise | 
|  | * @see AudioGainConfig. | 
|  | */ | 
|  | public AudioGainConfig gain() { | 
|  | return mGain; | 
|  | } | 
|  |  | 
|  | @Override | 
|  | public String toString() { | 
|  | return "{mPort:" + mPort | 
|  | + ", mSamplingRate:" + mSamplingRate | 
|  | + ", mChannelMask: " + mChannelMask | 
|  | + ", mFormat:" + mFormat | 
|  | + ", mGain:" + mGain | 
|  | + "}"; | 
|  | } | 
|  | } |