summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/mpeg2ts/ATSParser.cpp
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2015-04-15 14:33:39 -0700
committerMarco Nelissen <marcone@google.com>2015-04-15 14:33:39 -0700
commitbe9634d071e79b72a42a4504f64eda9e2a0bceb8 (patch)
tree5020a5acbb4ce3b522d8a516ee2cf5dbf5680bf4 /media/libstagefright/mpeg2ts/ATSParser.cpp
parent0958e926fef85d7e1e0eb08f330ff46218b72822 (diff)
downloadframeworks_av-be9634d071e79b72a42a4504f64eda9e2a0bceb8.zip
frameworks_av-be9634d071e79b72a42a4504f64eda9e2a0bceb8.tar.gz
frameworks_av-be9634d071e79b72a42a4504f64eda9e2a0bceb8.tar.bz2
Signal EOS at end of mpeg video to flush out final sample
Change-Id: I27196a4a4b7fe37da52d3ee99da8cb80294d36d0
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 482ccff..1eae6cf 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -136,6 +136,7 @@ private:
sp<ABuffer> mBuffer;
sp<AnotherPacketSource> mSource;
bool mPayloadStarted;
+ bool mEOSReached;
uint64_t mPrevPTS;
@@ -493,6 +494,7 @@ ATSParser::Stream::Stream(
mPCR_PID(PCR_PID),
mExpectedContinuityCounter(-1),
mPayloadStarted(false),
+ mEOSReached(false),
mPrevPTS(0),
mQueue(NULL) {
switch (mStreamType) {
@@ -692,6 +694,8 @@ void ATSParser::Stream::signalEOS(status_t finalResult) {
if (mSource != NULL) {
mSource->signalEOS(finalResult);
}
+ mEOSReached = true;
+ flush();
}
status_t ATSParser::Stream::parsePES(ABitReader *br) {
@@ -902,6 +906,10 @@ void ATSParser::Stream::onPayloadData(
status_t err = mQueue->appendData(data, size, timeUs);
+ if (mEOSReached) {
+ mQueue->signalEOS();
+ }
+
if (err != OK) {
return;
}