diff options
author | Martin Fietz <Martin.Fietz@gmail.com> | 2016-01-31 13:35:35 +0100 |
---|---|---|
committer | Martin Fietz <Martin.Fietz@gmail.com> | 2016-01-31 13:35:35 +0100 |
commit | afb7e7c64f5d79f4a516bd975bb98f9bc5c8617e (patch) | |
tree | dfd86b1f83bbd8c8f797c8096ae00098100855d3 | |
parent | 84e888bcb098db3fee5bf41e6883bf83c99aea74 (diff) | |
download | AudioPlayer-afb7e7c64f5d79f4a516bd975bb98f9bc5c8617e.tar.gz |
Catch everything that could go wrong (to fallback to native Android mediaplayer)
-rw-r--r-- | library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java b/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java index 772042f..976ce9c 100644 --- a/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java +++ b/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java @@ -496,6 +496,22 @@ public class SonicAudioPlayer extends AbstractAudioPlayer { return AudioFormat.CHANNEL_OUT_MONO; case 2: return AudioFormat.CHANNEL_OUT_STEREO; + case 3: + return AudioFormat.CHANNEL_OUT_STEREO | AudioFormat.CHANNEL_OUT_FRONT_CENTER; + case 4: + return AudioFormat.CHANNEL_OUT_QUAD; + case 5: + return AudioFormat.CHANNEL_OUT_QUAD | AudioFormat.CHANNEL_OUT_FRONT_CENTER; + case 6: + return AudioFormat.CHANNEL_OUT_5POINT1; + case 7: + return AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER; + case 8: + if (Build.VERSION.SDK_INT >= 23) { + return AudioFormat.CHANNEL_OUT_7POINT1_SURROUND; + } else { + return -1; + } default: return -1; // Error } @@ -528,11 +544,7 @@ public class SonicAudioPlayer extends AbstractAudioPlayer { } final MediaFormat oFormat = mExtractor.getTrackFormat(trackNum); - if (oFormat.containsKey(MediaFormat.KEY_SAMPLE_RATE) - && oFormat.containsKey(MediaFormat.KEY_SAMPLE_RATE) - && oFormat.containsKey(MediaFormat.KEY_CHANNEL_COUNT) - && oFormat.containsKey(MediaFormat.KEY_MIME) - && oFormat.containsKey(MediaFormat.KEY_DURATION)) { + try { int sampleRate = oFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE); int channelCount = oFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT); final String mime = oFormat.getString(MediaFormat.KEY_MIME); @@ -547,7 +559,8 @@ public class SonicAudioPlayer extends AbstractAudioPlayer { mExtractor.selectTrack(trackNum); mCodec = MediaCodec.createDecoderByType(mime); mCodec.configure(oFormat, null, null, 0); - } else { + } catch(Throwable th) { + Log.e(TAG, Log.getStackTraceString(th)); error(); } mLock.unlock(); |