summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MPEG2TSWriter.cpp
diff options
context:
space:
mode:
authorPaul Fariello <fariello@archos.com>2012-01-23 17:24:35 +0100
committerMartin Storsjo <martin@martin.st>2012-07-10 13:34:15 +0300
commitd4e5af6bc0a012e8d43975ca8b5627631333920d (patch)
tree4fa273c0f4f7969c375f9ea0d9fe8b651a77cfd7 /media/libstagefright/MPEG2TSWriter.cpp
parentffb829430ff20ccd6c13e6ed894f2373b2d93939 (diff)
downloadframeworks_av-d4e5af6bc0a012e8d43975ca8b5627631333920d.zip
frameworks_av-d4e5af6bc0a012e8d43975ca8b5627631333920d.tar.gz
frameworks_av-d4e5af6bc0a012e8d43975ca8b5627631333920d.tar.bz2
MPEG2TSWriter: Write proper continuity counters for PAT and PMT
Change-Id: If94e31e51c563867db6d2376ad771f9751416084
Diffstat (limited to 'media/libstagefright/MPEG2TSWriter.cpp')
-rw-r--r--media/libstagefright/MPEG2TSWriter.cpp24
1 files changed, 17 insertions, 7 deletions
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;