diff options
author | Robert Shih <robertshih@google.com> | 2014-11-14 00:44:16 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-11-14 00:44:16 +0000 |
commit | 5edc507d875fcb8d80d441ae2b32d2863e5a19c9 (patch) | |
tree | 9b00e5294387ef13f67aba6275d13b99f0086c64 /media/libstagefright/mpeg2ts | |
parent | 3cfd5c6fa8ccefe680c8f1881b99937cb30d2c9e (diff) | |
parent | 811c3ad2eb02a169c22bd269d5d82e26174be349 (diff) | |
download | frameworks_av-5edc507d875fcb8d80d441ae2b32d2863e5a19c9.zip frameworks_av-5edc507d875fcb8d80d441ae2b32d2863e5a19c9.tar.gz frameworks_av-5edc507d875fcb8d80d441ae2b32d2863e5a19c9.tar.bz2 |
am 811c3ad2: am 2458928e: am e0b7ddcd: Merge "PlaylistFetcher: check ts program streams before disabling a/v" into lmp-mr1-dev
* commit '811c3ad2eb02a169c22bd269d5d82e26174be349':
PlaylistFetcher: check ts program streams before disabling a/v
Diffstat (limited to 'media/libstagefright/mpeg2ts')
-rw-r--r-- | media/libstagefright/mpeg2ts/ATSParser.cpp | 31 | ||||
-rw-r--r-- | media/libstagefright/mpeg2ts/ATSParser.h | 1 |
2 files changed, 29 insertions, 3 deletions
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp index eab7616..c1dc0f9 100644 --- a/media/libstagefright/mpeg2ts/ATSParser.cpp +++ b/media/libstagefright/mpeg2ts/ATSParser.cpp @@ -63,6 +63,7 @@ struct ATSParser::Program : public RefBase { void signalEOS(status_t finalResult); sp<MediaSource> getSource(SourceType type); + bool hasSource(SourceType type) const; int64_t convertPTSToTimestamp(uint64_t PTS); @@ -119,6 +120,9 @@ struct ATSParser::Stream : public RefBase { sp<MediaSource> getSource(SourceType type); + bool isAudio() const; + bool isVideo() const; + protected: virtual ~Stream(); @@ -146,9 +150,6 @@ private: void extractAACFrames(const sp<ABuffer> &buffer); - bool isAudio() const; - bool isVideo() const; - DISALLOW_EVIL_CONSTRUCTORS(Stream); }; @@ -440,6 +441,19 @@ sp<MediaSource> ATSParser::Program::getSource(SourceType type) { return NULL; } +bool ATSParser::Program::hasSource(SourceType type) const { + for (size_t i = 0; i < mStreams.size(); ++i) { + const sp<Stream> &stream = mStreams.valueAt(i); + if (type == AUDIO && stream->isAudio()) { + return true; + } else if (type == VIDEO && stream->isVideo()) { + return true; + } + } + + return false; +} + int64_t ATSParser::Program::convertPTSToTimestamp(uint64_t PTS) { if (!(mParser->mFlags & TS_TIMESTAMPS_ARE_ABSOLUTE)) { if (!mFirstPTSValid) { @@ -1278,6 +1292,17 @@ sp<MediaSource> ATSParser::getSource(SourceType type) { return NULL; } +bool ATSParser::hasSource(SourceType type) const { + for (size_t i = 0; i < mPrograms.size(); ++i) { + const sp<Program> &program = mPrograms.itemAt(i); + if (program->hasSource(type)) { + return true; + } + } + + return false; +} + bool ATSParser::PTSTimeDeltaEstablished() { if (mPrograms.isEmpty()) { return false; diff --git a/media/libstagefright/mpeg2ts/ATSParser.h b/media/libstagefright/mpeg2ts/ATSParser.h index 204934d..5d76cbd 100644 --- a/media/libstagefright/mpeg2ts/ATSParser.h +++ b/media/libstagefright/mpeg2ts/ATSParser.h @@ -74,6 +74,7 @@ struct ATSParser : public RefBase { NUM_SOURCE_TYPES = 2 }; sp<MediaSource> getSource(SourceType type); + bool hasSource(SourceType type) const; bool PTSTimeDeltaEstablished(); |