summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/mpeg2ts/ATSParser.cpp
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2015-04-16 19:25:50 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-16 19:25:50 +0000
commitff9863b206cd5d1e856dbfdf66bc85581aee7608 (patch)
treed0b99acf32a9e6e2032db8b46789c6d5de8c5b2f /media/libstagefright/mpeg2ts/ATSParser.cpp
parentc224ec53a17994fa97ab2f29304647c9f195c51c (diff)
parent6705a49f6481ad1728215a2a72472fe43c786cd0 (diff)
downloadframeworks_av-ff9863b206cd5d1e856dbfdf66bc85581aee7608.zip
frameworks_av-ff9863b206cd5d1e856dbfdf66bc85581aee7608.tar.gz
frameworks_av-ff9863b206cd5d1e856dbfdf66bc85581aee7608.tar.bz2
am 6705a49f: am 541a9ac7: am 8cd4132a: am 3f22f5a2: Merge "Signal EOS at end of mpeg video to flush out final sample"
* commit '6705a49f6481ad1728215a2a72472fe43c786cd0': Signal EOS at end of mpeg video to flush out final sample
Diffstat (limited to 'media/libstagefright/mpeg2ts/ATSParser.cpp')
-rw-r--r--media/libstagefright/mpeg2ts/ATSParser.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index 0a868bc..14ae81c 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -146,6 +146,7 @@ private:
sp<ABuffer> mBuffer;
sp<AnotherPacketSource> mSource;
bool mPayloadStarted;
+ bool mEOSReached;
uint64_t mPrevPTS;
@@ -567,6 +568,7 @@ ATSParser::Stream::Stream(
mPCR_PID(PCR_PID),
mExpectedContinuityCounter(-1),
mPayloadStarted(false),
+ mEOSReached(false),
mPrevPTS(0),
mQueue(NULL) {
switch (mStreamType) {
@@ -766,6 +768,8 @@ void ATSParser::Stream::signalEOS(status_t finalResult) {
if (mSource != NULL) {
mSource->signalEOS(finalResult);
}
+ mEOSReached = true;
+ flush();
}
status_t ATSParser::Stream::parsePES(ABitReader *br) {
@@ -976,6 +980,10 @@ void ATSParser::Stream::onPayloadData(
status_t err = mQueue->appendData(data, size, timeUs);
+ if (mEOSReached) {
+ mQueue->signalEOS();
+ }
+
if (err != OK) {
return;
}