summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-09-28 13:13:38 -0700
committerAndreas Huber <andih@google.com>2010-09-28 13:13:38 -0700
commitc7d368d990303dc5369c7c61579f88c5059dc8d7 (patch)
treeb14a6f51fc145d8f63bfbda1124f4b1b944bbdd8 /media/libstagefright/codecs
parented54ad0f8619ae416b0968ade6248894cbfc4dba (diff)
downloadframeworks_av-c7d368d990303dc5369c7c61579f88c5059dc8d7.zip
frameworks_av-c7d368d990303dc5369c7c61579f88c5059dc8d7.tar.gz
frameworks_av-c7d368d990303dc5369c7c61579f88c5059dc8d7.tar.bz2
Properly flush the AudioTrack/AudioSink on a seek request and make sure that both the mp3 decoder and aac software decoders start fresh after a seek without any dependency on previously decoded content.
Change-Id: I4909fdf19518dbabb6c340e2a31b50dfe6c5b067 related-to-bug: 3029947
Diffstat (limited to 'media/libstagefright/codecs')
-rw-r--r--media/libstagefright/codecs/aacdec/AACDecoder.cpp4
-rw-r--r--media/libstagefright/codecs/mp3dec/MP3Decoder.cpp4
2 files changed, 8 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/aacdec/AACDecoder.cpp b/media/libstagefright/codecs/aacdec/AACDecoder.cpp
index e4ed5e6..f58c16d 100644
--- a/media/libstagefright/codecs/aacdec/AACDecoder.cpp
+++ b/media/libstagefright/codecs/aacdec/AACDecoder.cpp
@@ -171,6 +171,10 @@ status_t AACDecoder::read(
mInputBuffer->release();
mInputBuffer = NULL;
}
+
+ // Make sure that the next buffer output does not still
+ // depend on fragments from the last one decoded.
+ PVMP4AudioDecoderResetBuffer(mDecoderBuf);
} else {
seekTimeUs = -1;
}
diff --git a/media/libstagefright/codecs/mp3dec/MP3Decoder.cpp b/media/libstagefright/codecs/mp3dec/MP3Decoder.cpp
index c4a8280..59dd740 100644
--- a/media/libstagefright/codecs/mp3dec/MP3Decoder.cpp
+++ b/media/libstagefright/codecs/mp3dec/MP3Decoder.cpp
@@ -132,6 +132,10 @@ status_t MP3Decoder::read(
mInputBuffer->release();
mInputBuffer = NULL;
}
+
+ // Make sure that the next buffer output does not still
+ // depend on fragments from the last one decoded.
+ pvmp3_InitDecoder(mConfig, mDecoderBuf);
} else {
seekTimeUs = -1;
}