From db4b478cc0a6ff34d25e5c60882000babf0a4b0a Mon Sep 17 00:00:00 2001 From: Drew Hill Date: Wed, 30 Nov 2016 18:47:36 -0500 Subject: [PATCH 1/3] fix 6.1 channel passthrough failing --- .../com/google/android/exoplayer2/audio/AudioTrack.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java b/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java index 8e6cf68dc8..487ce28382 100644 --- a/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java +++ b/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java @@ -443,6 +443,14 @@ public final class AudioTrack { } boolean passthrough = !MimeTypes.AUDIO_RAW.equals(mimeType); + if (Util.SDK_INT <= 23 && "foster".equals(Util.DEVICE) && "NVIDIA".equals(Util.MANUFACTURER)) { + if (channelConfig == (AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER) ) + channelConfig = C.CHANNEL_OUT_7POINT1_SURROUND; + else if (channelConfig == (AudioFormat.CHANNEL_OUT_QUAD | AudioFormat.CHANNEL_OUT_FRONT_CENTER) + || channelConfig == (AudioFormat.CHANNEL_OUT_QUAD) + || channelConfig == (AudioFormat.CHANNEL_OUT_STEREO | AudioFormat.CHANNEL_OUT_FRONT_CENTER)) + channelConfig = AudioFormat.CHANNEL_OUT_5POINT1; + } @C.Encoding int sourceEncoding; if (passthrough) { sourceEncoding = getEncodingForMimeType(mimeType); From e22c42c7c22bcc4fa10d8282163ce1f6f5100c60 Mon Sep 17 00:00:00 2001 From: Drew Hill Date: Thu, 1 Dec 2016 19:30:27 -0500 Subject: [PATCH 2/3] requested changes for simplicity --- .../google/android/exoplayer2/audio/AudioTrack.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java b/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java index 487ce28382..da89821cb8 100644 --- a/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java +++ b/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java @@ -441,16 +441,14 @@ public final class AudioTrack { default: throw new IllegalArgumentException("Unsupported channel count: " + channelCount); } - - boolean passthrough = !MimeTypes.AUDIO_RAW.equals(mimeType); if (Util.SDK_INT <= 23 && "foster".equals(Util.DEVICE) && "NVIDIA".equals(Util.MANUFACTURER)) { - if (channelConfig == (AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER) ) + if (channelCount == 7) channelConfig = C.CHANNEL_OUT_7POINT1_SURROUND; - else if (channelConfig == (AudioFormat.CHANNEL_OUT_QUAD | AudioFormat.CHANNEL_OUT_FRONT_CENTER) - || channelConfig == (AudioFormat.CHANNEL_OUT_QUAD) - || channelConfig == (AudioFormat.CHANNEL_OUT_STEREO | AudioFormat.CHANNEL_OUT_FRONT_CENTER)) + else if (channelCount >=3 && channelCount <= 5) channelConfig = AudioFormat.CHANNEL_OUT_5POINT1; } + + boolean passthrough = !MimeTypes.AUDIO_RAW.equals(mimeType); @C.Encoding int sourceEncoding; if (passthrough) { sourceEncoding = getEncodingForMimeType(mimeType); From cc24c4e38bd222f8b43efaba513c76d0a9effe4b Mon Sep 17 00:00:00 2001 From: drhill Date: Tue, 6 Dec 2016 08:08:58 -0500 Subject: [PATCH 3/3] change to switch to avoid changing 4.0 tracks --- .../android/exoplayer2/audio/AudioTrack.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java b/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java index da89821cb8..a079c0df60 100644 --- a/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java +++ b/library/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java @@ -442,10 +442,17 @@ public final class AudioTrack { throw new IllegalArgumentException("Unsupported channel count: " + channelCount); } if (Util.SDK_INT <= 23 && "foster".equals(Util.DEVICE) && "NVIDIA".equals(Util.MANUFACTURER)) { - if (channelCount == 7) - channelConfig = C.CHANNEL_OUT_7POINT1_SURROUND; - else if (channelCount >=3 && channelCount <= 5) - channelConfig = AudioFormat.CHANNEL_OUT_5POINT1; + switch(channelCount) { + case 7: + channelConfig = C.CHANNEL_OUT_7POINT1_SURROUND; + break; + case 3: + case 5: + channelConfig = AudioFormat.CHANNEL_OUT_5POINT1; + break; + default: + break; + } } boolean passthrough = !MimeTypes.AUDIO_RAW.equals(mimeType);