aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2016-01-31 13:35:35 +0100
committerMartin Fietz <Martin.Fietz@gmail.com>2016-01-31 13:35:35 +0100
commitafb7e7c64f5d79f4a516bd975bb98f9bc5c8617e (patch)
treedfd86b1f83bbd8c8f797c8096ae00098100855d3
parent84e888bcb098db3fee5bf41e6883bf83c99aea74 (diff)
downloadAudioPlayer-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.java25
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();