aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2016-02-10 20:42:12 +0100
committerMartin Fietz <Martin.Fietz@gmail.com>2016-02-10 20:42:12 +0100
commit66faaa4bdd907638c7549d498442e6f0f6c41dfd (patch)
treeae0f11fcfa809f64731a7b990637bdc3c3faf7cf
parent82935f4336ce1084983407770d065c71c597437e (diff)
downloadAudioPlayer-mirror-goog-studio-master-dev.tar.gz
-rw-r--r--library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java b/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java
index 976ce9c..e055513 100644
--- a/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java
+++ b/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java
@@ -612,6 +612,9 @@ public class SonicAudioPlayer extends AbstractAudioPlayer {
@SuppressWarnings("deprecation")
public void decode() {
mDecoderThread = new Thread(new Runnable() {
+
+ private int currHeadPos;
+
@Override
public void run() {
@@ -625,6 +628,7 @@ public class SonicAudioPlayer extends AbstractAudioPlayer {
boolean sawOutputEOS = false;
while (!sawInputEOS && !sawOutputEOS && mContinue) {
+ currHeadPos = mTrack.getPlaybackHeadPosition();
if (mCurrentState == STATE_PAUSED) {
System.out.println("Decoder changed to PAUSED");
try {
@@ -736,7 +740,18 @@ public class SonicAudioPlayer extends AbstractAudioPlayer {
Log.d(TAG_TRACK, "Duration: " + (int) (mDuration / 1000));
Log.d(TAG_TRACK, "Current position: " + (int) (mExtractor.getSampleTime() / 1000));
mCodec.stop();
+
+ // wait for track to finish playing
+ int lastHeadPos;
+ do {
+ lastHeadPos = currHeadPos;
+ try {
+ Thread.sleep(100);
+ currHeadPos = mTrack.getPlaybackHeadPosition();
+ } catch (InterruptedException e) { /* ignore */ }
+ } while(currHeadPos != lastHeadPos);
mTrack.stop();
+
Log.d(TAG_TRACK, "Stopped codec and track");
Log.d(TAG_TRACK, "Current position: " + (int) (mExtractor.getSampleTime() / 1000));
mIsDecoding = false;