Merge "Audio ENCODING_IEC61937: enforce use of CHANNEL_OUT_STEREO" into nyc-dev

am: 566e721

* commit '566e7212ab5ba29de5e1a3446f029c3aca998258':
  Audio ENCODING_IEC61937: enforce use of CHANNEL_OUT_STEREO
This commit is contained in:
Phil Burk
2016-03-21 19:35:51 +00:00
committed by android-build-merger
2 changed files with 14 additions and 0 deletions

View File

@@ -256,6 +256,11 @@ public final class AudioFormat implements Parcelable {
public static final int ENCODING_AAC_HE_V2 = 12;
/** Audio data format: compressed audio wrapped in PCM for HDMI
* or S/PDIF passthrough.
* IEC61937 uses a stereo stream of 16-bit samples as the wrapper.
* So the channel mask for the track must be {@link #CHANNEL_OUT_STEREO}.
* Data should be written to the stream in a short[] array.
* If the data is written in a byte[] array then there may be endian problems
* on some platforms when converting to short internally.
*/
public static final int ENCODING_IEC61937 = 13;

View File

@@ -806,6 +806,15 @@ public class AudioTrack implements AudioRouting
}
mSampleRate = sampleRateInHz;
// IEC61937 is based on stereo. We could coerce it to stereo.
// But the application needs to know the stream is stereo so that
// it is encoded and played correctly. So better to just reject it.
if (audioFormat == AudioFormat.ENCODING_IEC61937
&& channelConfig != AudioFormat.CHANNEL_OUT_STEREO) {
throw new IllegalArgumentException(
"ENCODING_IEC61937 must be configured as CHANNEL_OUT_STEREO");
}
//--------------
// channel config
mChannelConfiguration = channelConfig;