Loading media/java/android/media/AudioFormat.java +58 −51 Original line number Diff line number Diff line Loading @@ -669,13 +669,6 @@ public final class AudioFormat implements Parcelable { throw new UnsupportedOperationException("There is no valid usage of this constructor"); } /** * Private constructor with an ignored argument to differentiate from the removed default ctor * @param ignoredArgument */ private AudioFormat(int ignoredArgument) { } /** * Constructor used by the JNI. Parameters are not checked for validity. */ Loading @@ -683,14 +676,37 @@ public final class AudioFormat implements Parcelable { // constructor @UnsupportedAppUsage private AudioFormat(int encoding, int sampleRate, int channelMask, int channelIndexMask) { mEncoding = encoding; mSampleRate = sampleRate; mChannelMask = channelMask; mChannelIndexMask = channelIndexMask; mPropertySetMask = AUDIO_FORMAT_HAS_PROPERTY_ENCODING | AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK; this( AUDIO_FORMAT_HAS_PROPERTY_ENCODING | AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK, encoding, sampleRate, channelMask, channelIndexMask ); } private AudioFormat(int propertySetMask, int encoding, int sampleRate, int channelMask, int channelIndexMask) { mPropertySetMask = propertySetMask; mEncoding = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_ENCODING) != 0 ? encoding : ENCODING_INVALID; mSampleRate = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE) != 0 ? sampleRate : SAMPLE_RATE_UNSPECIFIED; mChannelMask = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK) != 0 ? channelMask : CHANNEL_INVALID; mChannelIndexMask = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK) != 0 ? channelIndexMask : CHANNEL_INVALID; // Compute derived values. final int channelIndexCount = Integer.bitCount(getChannelIndexMask()); int channelCount = channelCountFromOutChannelMask(getChannelMask()); if (channelCount == 0) { channelCount = channelIndexCount; } else if (channelCount != channelIndexCount && channelIndexCount != 0) { channelCount = 0; // position and index channel count mismatch } mChannelCount = channelCount; } /** @hide */ Loading @@ -704,14 +720,20 @@ public final class AudioFormat implements Parcelable { /** @hide */ public final static int AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK = 0x1 << 3; // This is an immutable class, all member variables are final. // Essential values. @UnsupportedAppUsage private int mEncoding; private final int mEncoding; @UnsupportedAppUsage private int mSampleRate; private final int mSampleRate; @UnsupportedAppUsage private int mChannelMask; private int mChannelIndexMask; private int mPropertySetMask; private final int mChannelMask; private final int mChannelIndexMask; private final int mPropertySetMask; // Derived values computed in the constructor, cached here. private final int mChannelCount; /** * Return the encoding. Loading @@ -721,9 +743,6 @@ public final class AudioFormat implements Parcelable { * {@link AudioFormat#ENCODING_INVALID} if not set. */ public int getEncoding() { if ((mPropertySetMask & AUDIO_FORMAT_HAS_PROPERTY_ENCODING) == 0) { return ENCODING_INVALID; } return mEncoding; } Loading @@ -745,9 +764,6 @@ public final class AudioFormat implements Parcelable { * {@link AudioFormat#CHANNEL_INVALID} if not set. */ public int getChannelMask() { if ((mPropertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK) == 0) { return CHANNEL_INVALID; } return mChannelMask; } Loading @@ -760,9 +776,6 @@ public final class AudioFormat implements Parcelable { * {@link AudioFormat#CHANNEL_INVALID} if not set or an invalid mask was used. */ public int getChannelIndexMask() { if ((mPropertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK) == 0) { return CHANNEL_INVALID; } return mChannelIndexMask; } Loading @@ -772,14 +785,7 @@ public final class AudioFormat implements Parcelable { * Zero is returned if both the channel position mask and the channel index mask are not set. */ public int getChannelCount() { final int channelIndexCount = Integer.bitCount(getChannelIndexMask()); int channelCount = channelCountFromOutChannelMask(getChannelMask()); if (channelCount == 0) { channelCount = channelIndexCount; } else if (channelCount != channelIndexCount && channelIndexCount != 0) { channelCount = 0; // position and index channel count mismatch } return channelCount; return mChannelCount; } /** @hide */ Loading @@ -790,7 +796,7 @@ public final class AudioFormat implements Parcelable { /** @hide */ public String toLogFriendlyString() { return String.format("%dch %dHz %s", getChannelCount(), mSampleRate, toLogFriendlyEncoding(mEncoding)); mChannelCount, mSampleRate, toLogFriendlyEncoding(mEncoding)); } /** Loading Loading @@ -839,14 +845,13 @@ public final class AudioFormat implements Parcelable { * @return a new {@link AudioFormat} object */ public AudioFormat build() { AudioFormat af = new AudioFormat(1980/*ignored*/); af.mEncoding = mEncoding; // not calling setSampleRate is equivalent to calling // setSampleRate(SAMPLE_RATE_UNSPECIFIED) af.mSampleRate = mSampleRate; af.mChannelMask = mChannelMask; af.mChannelIndexMask = mChannelIndexMask; af.mPropertySetMask = mPropertySetMask; AudioFormat af = new AudioFormat( mPropertySetMask, mEncoding, mSampleRate, mChannelMask, mChannelIndexMask ); return af; } Loading Loading @@ -1049,11 +1054,13 @@ public final class AudioFormat implements Parcelable { } private AudioFormat(Parcel in) { mPropertySetMask = in.readInt(); mEncoding = in.readInt(); mSampleRate = in.readInt(); mChannelMask = in.readInt(); mChannelIndexMask = in.readInt(); this( in.readInt(), // propertySetMask in.readInt(), // encoding in.readInt(), // sampleRate in.readInt(), // channelMask in.readInt() // channelIndexMask ); } public static final Parcelable.Creator<AudioFormat> CREATOR = Loading Loading
media/java/android/media/AudioFormat.java +58 −51 Original line number Diff line number Diff line Loading @@ -669,13 +669,6 @@ public final class AudioFormat implements Parcelable { throw new UnsupportedOperationException("There is no valid usage of this constructor"); } /** * Private constructor with an ignored argument to differentiate from the removed default ctor * @param ignoredArgument */ private AudioFormat(int ignoredArgument) { } /** * Constructor used by the JNI. Parameters are not checked for validity. */ Loading @@ -683,14 +676,37 @@ public final class AudioFormat implements Parcelable { // constructor @UnsupportedAppUsage private AudioFormat(int encoding, int sampleRate, int channelMask, int channelIndexMask) { mEncoding = encoding; mSampleRate = sampleRate; mChannelMask = channelMask; mChannelIndexMask = channelIndexMask; mPropertySetMask = AUDIO_FORMAT_HAS_PROPERTY_ENCODING | AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK; this( AUDIO_FORMAT_HAS_PROPERTY_ENCODING | AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK | AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK, encoding, sampleRate, channelMask, channelIndexMask ); } private AudioFormat(int propertySetMask, int encoding, int sampleRate, int channelMask, int channelIndexMask) { mPropertySetMask = propertySetMask; mEncoding = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_ENCODING) != 0 ? encoding : ENCODING_INVALID; mSampleRate = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE) != 0 ? sampleRate : SAMPLE_RATE_UNSPECIFIED; mChannelMask = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK) != 0 ? channelMask : CHANNEL_INVALID; mChannelIndexMask = (propertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK) != 0 ? channelIndexMask : CHANNEL_INVALID; // Compute derived values. final int channelIndexCount = Integer.bitCount(getChannelIndexMask()); int channelCount = channelCountFromOutChannelMask(getChannelMask()); if (channelCount == 0) { channelCount = channelIndexCount; } else if (channelCount != channelIndexCount && channelIndexCount != 0) { channelCount = 0; // position and index channel count mismatch } mChannelCount = channelCount; } /** @hide */ Loading @@ -704,14 +720,20 @@ public final class AudioFormat implements Parcelable { /** @hide */ public final static int AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK = 0x1 << 3; // This is an immutable class, all member variables are final. // Essential values. @UnsupportedAppUsage private int mEncoding; private final int mEncoding; @UnsupportedAppUsage private int mSampleRate; private final int mSampleRate; @UnsupportedAppUsage private int mChannelMask; private int mChannelIndexMask; private int mPropertySetMask; private final int mChannelMask; private final int mChannelIndexMask; private final int mPropertySetMask; // Derived values computed in the constructor, cached here. private final int mChannelCount; /** * Return the encoding. Loading @@ -721,9 +743,6 @@ public final class AudioFormat implements Parcelable { * {@link AudioFormat#ENCODING_INVALID} if not set. */ public int getEncoding() { if ((mPropertySetMask & AUDIO_FORMAT_HAS_PROPERTY_ENCODING) == 0) { return ENCODING_INVALID; } return mEncoding; } Loading @@ -745,9 +764,6 @@ public final class AudioFormat implements Parcelable { * {@link AudioFormat#CHANNEL_INVALID} if not set. */ public int getChannelMask() { if ((mPropertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK) == 0) { return CHANNEL_INVALID; } return mChannelMask; } Loading @@ -760,9 +776,6 @@ public final class AudioFormat implements Parcelable { * {@link AudioFormat#CHANNEL_INVALID} if not set or an invalid mask was used. */ public int getChannelIndexMask() { if ((mPropertySetMask & AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK) == 0) { return CHANNEL_INVALID; } return mChannelIndexMask; } Loading @@ -772,14 +785,7 @@ public final class AudioFormat implements Parcelable { * Zero is returned if both the channel position mask and the channel index mask are not set. */ public int getChannelCount() { final int channelIndexCount = Integer.bitCount(getChannelIndexMask()); int channelCount = channelCountFromOutChannelMask(getChannelMask()); if (channelCount == 0) { channelCount = channelIndexCount; } else if (channelCount != channelIndexCount && channelIndexCount != 0) { channelCount = 0; // position and index channel count mismatch } return channelCount; return mChannelCount; } /** @hide */ Loading @@ -790,7 +796,7 @@ public final class AudioFormat implements Parcelable { /** @hide */ public String toLogFriendlyString() { return String.format("%dch %dHz %s", getChannelCount(), mSampleRate, toLogFriendlyEncoding(mEncoding)); mChannelCount, mSampleRate, toLogFriendlyEncoding(mEncoding)); } /** Loading Loading @@ -839,14 +845,13 @@ public final class AudioFormat implements Parcelable { * @return a new {@link AudioFormat} object */ public AudioFormat build() { AudioFormat af = new AudioFormat(1980/*ignored*/); af.mEncoding = mEncoding; // not calling setSampleRate is equivalent to calling // setSampleRate(SAMPLE_RATE_UNSPECIFIED) af.mSampleRate = mSampleRate; af.mChannelMask = mChannelMask; af.mChannelIndexMask = mChannelIndexMask; af.mPropertySetMask = mPropertySetMask; AudioFormat af = new AudioFormat( mPropertySetMask, mEncoding, mSampleRate, mChannelMask, mChannelIndexMask ); return af; } Loading Loading @@ -1049,11 +1054,13 @@ public final class AudioFormat implements Parcelable { } private AudioFormat(Parcel in) { mPropertySetMask = in.readInt(); mEncoding = in.readInt(); mSampleRate = in.readInt(); mChannelMask = in.readInt(); mChannelIndexMask = in.readInt(); this( in.readInt(), // propertySetMask in.readInt(), // encoding in.readInt(), // sampleRate in.readInt(), // channelMask in.readInt() // channelIndexMask ); } public static final Parcelable.Creator<AudioFormat> CREATOR = Loading