From 5205152968957c51b597ddeabe6a5e17b2a84e38 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Fri, 31 Aug 2012 13:55:24 -0700 Subject: Improvements to our MPEG2 Transport Stream parser Verifies the continuity counter Parses and associates PCR time with streams Allows for a absolute time anchor to be signalled via discontinuity. Change-Id: I4bc88c78382c9cc6380f28df584cc6c254e0a8f9 --- .../nuplayer/StreamingSource.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'media/libmediaplayerservice/nuplayer') diff --git a/media/libmediaplayerservice/nuplayer/StreamingSource.cpp b/media/libmediaplayerservice/nuplayer/StreamingSource.cpp index b696aa4..a1fd2ed 100644 --- a/media/libmediaplayerservice/nuplayer/StreamingSource.cpp +++ b/media/libmediaplayerservice/nuplayer/StreamingSource.cpp @@ -42,7 +42,15 @@ NuPlayer::StreamingSource::~StreamingSource() { void NuPlayer::StreamingSource::start() { mStreamListener = new NuPlayerStreamListener(mSource, 0); - mTSParser = new ATSParser(ATSParser::TS_TIMESTAMPS_ARE_ABSOLUTE); + + uint32_t sourceFlags = mSource->flags(); + + uint32_t parserFlags = ATSParser::TS_TIMESTAMPS_ARE_ABSOLUTE; + if (sourceFlags & IStreamSource::kFlagAlignedVideoData) { + parserFlags |= ATSParser::ALIGNED_VIDEO_DATA; + } + + mTSParser = new ATSParser(parserFlags); mStreamListener->start(); } @@ -138,7 +146,17 @@ status_t NuPlayer::StreamingSource::dequeueAccessUnit( return finalResult == OK ? -EWOULDBLOCK : finalResult; } - return source->dequeueAccessUnit(accessUnit); + status_t err = source->dequeueAccessUnit(accessUnit); + +#if !defined(LOG_NDEBUG) || LOG_NDEBUG == 0 + if (err == OK) { + int64_t timeUs; + CHECK((*accessUnit)->meta()->findInt64("timeUs", &timeUs)); + ALOGV("dequeueAccessUnit timeUs=%lld us", timeUs); + } +#endif + + return err; } } // namespace android -- cgit v1.1