diff options
| author | Jean-Baptiste Queru <jbq@google.com> | 2012-08-10 12:44:04 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-08-10 12:44:04 -0700 |
| commit | 751fa786aa9599c694219085601f9f5ebe96a516 (patch) | |
| tree | 6b8ea38fa25a0cce13ae5d00ded028be74307cc6 | |
| parent | fcfc61da927e98d18cdcb53da8fa0a8a32ee1422 (diff) | |
| parent | 31a593b901eeb924ae5214962c628397dd0197f2 (diff) | |
| download | frameworks_av-751fa786aa9599c694219085601f9f5ebe96a516.zip frameworks_av-751fa786aa9599c694219085601f9f5ebe96a516.tar.gz frameworks_av-751fa786aa9599c694219085601f9f5ebe96a516.tar.bz2 | |
am 31a593b9: am 2001d2ac: Merge "MPEG2TSWriter: Write proper continuity counters for PAT and PMT"
* commit '31a593b901eeb924ae5214962c628397dd0197f2':
MPEG2TSWriter: Write proper continuity counters for PAT and PMT
| -rw-r--r-- | include/media/stagefright/MPEG2TSWriter.h | 2 | ||||
| -rw-r--r-- | media/libstagefright/MPEG2TSWriter.cpp | 24 |
2 files changed, 19 insertions, 7 deletions
diff --git a/include/media/stagefright/MPEG2TSWriter.h b/include/media/stagefright/MPEG2TSWriter.h index a7c9ecf..98fcf1d 100644 --- a/include/media/stagefright/MPEG2TSWriter.h +++ b/include/media/stagefright/MPEG2TSWriter.h @@ -69,6 +69,8 @@ private: int64_t mNumTSPacketsWritten; int64_t mNumTSPacketsBeforeMeta; + int mPATContinuityCounter; + int mPMTContinuityCounter; void init(); diff --git a/media/libstagefright/MPEG2TSWriter.cpp b/media/libstagefright/MPEG2TSWriter.cpp index f702376..62c8aab 100644 --- a/media/libstagefright/MPEG2TSWriter.cpp +++ b/media/libstagefright/MPEG2TSWriter.cpp @@ -471,7 +471,9 @@ MPEG2TSWriter::MPEG2TSWriter(int fd) mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), - mNumTSPacketsBeforeMeta(0) { + mNumTSPacketsBeforeMeta(0), + mPATContinuityCounter(0), + mPMTContinuityCounter(0) { init(); } @@ -482,7 +484,9 @@ MPEG2TSWriter::MPEG2TSWriter(const char *filename) mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), - mNumTSPacketsBeforeMeta(0) { + mNumTSPacketsBeforeMeta(0), + mPATContinuityCounter(0), + mPMTContinuityCounter(0) { init(); } @@ -495,7 +499,9 @@ MPEG2TSWriter::MPEG2TSWriter( mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), - mNumTSPacketsBeforeMeta(0) { + mNumTSPacketsBeforeMeta(0), + mPATContinuityCounter(0), + mPMTContinuityCounter(0) { init(); } @@ -732,8 +738,10 @@ void MPEG2TSWriter::writeProgramAssociationTable() { memset(buffer->data(), 0, buffer->size()); memcpy(buffer->data(), kData, sizeof(kData)); - static const unsigned kContinuityCounter = 5; - buffer->data()[3] |= kContinuityCounter; + if (++mPATContinuityCounter == 16) { + mPATContinuityCounter = 0; + } + buffer->data()[3] |= mPATContinuityCounter; CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); } @@ -784,8 +792,10 @@ void MPEG2TSWriter::writeProgramMap() { memset(buffer->data(), 0, buffer->size()); memcpy(buffer->data(), kData, sizeof(kData)); - static const unsigned kContinuityCounter = 5; - buffer->data()[3] |= kContinuityCounter; + if (++mPMTContinuityCounter == 16) { + mPMTContinuityCounter = 0; + } + buffer->data()[3] |= mPMTContinuityCounter; size_t section_length = 5 * mSources.size() + 4 + 9; buffer->data()[6] |= section_length >> 8; |
