Loading include/media/stagefright/MPEG2TSWriter.h +10 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,10 @@ struct MPEG2TSWriter : public MediaWriter { MPEG2TSWriter(int fd); MPEG2TSWriter(const char *filename); MPEG2TSWriter( void *cookie, ssize_t (*write)(void *cookie, const void *data, size_t size)); virtual status_t addSource(const sp<MediaSource> &source); virtual status_t start(MetaData *param = NULL); virtual status_t stop(); Loading @@ -51,6 +55,10 @@ private: struct SourceInfo; FILE *mFile; void *mWriteCookie; ssize_t (*mWriteFunc)(void *cookie, const void *data, size_t size); sp<ALooper> mLooper; sp<AHandlerReflector<MPEG2TSWriter> > mReflector; Loading @@ -69,6 +77,8 @@ private: void writeProgramMap(); void writeAccessUnit(int32_t sourceIndex, const sp<ABuffer> &buffer); ssize_t internalWrite(const void *data, size_t size); DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSWriter); }; Loading media/libstagefright/MPEG2TSWriter.cpp +34 −7 Original line number Diff line number Diff line Loading @@ -466,6 +466,8 @@ bool MPEG2TSWriter::SourceInfo::eosReceived() const { MPEG2TSWriter::MPEG2TSWriter(int fd) : mFile(fdopen(dup(fd), "wb")), mWriteCookie(NULL), mWriteFunc(NULL), mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), Loading @@ -475,6 +477,21 @@ MPEG2TSWriter::MPEG2TSWriter(int fd) MPEG2TSWriter::MPEG2TSWriter(const char *filename) : mFile(fopen(filename, "wb")), mWriteCookie(NULL), mWriteFunc(NULL), mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), mNumTSPacketsBeforeMeta(0) { init(); } MPEG2TSWriter::MPEG2TSWriter( void *cookie, ssize_t (*write)(void *cookie, const void *data, size_t size)) : mFile(NULL), mWriteCookie(cookie), mWriteFunc(write), mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), Loading @@ -483,7 +500,7 @@ MPEG2TSWriter::MPEG2TSWriter(const char *filename) } void MPEG2TSWriter::init() { CHECK(mFile != NULL); CHECK(mFile != NULL || mWriteFunc != NULL); mLooper = new ALooper; mLooper->setName("MPEG2TSWriter"); Loading @@ -502,9 +519,11 @@ MPEG2TSWriter::~MPEG2TSWriter() { mLooper->unregisterHandler(mReflector->id()); mLooper->stop(); if (mFile != NULL) { fclose(mFile); mFile = NULL; } } status_t MPEG2TSWriter::addSource(const sp<MediaSource> &source) { CHECK(!mStarted); Loading Loading @@ -718,7 +737,7 @@ void MPEG2TSWriter::writeProgramAssociationTable() { static const unsigned kContinuityCounter = 5; buffer->data()[3] |= kContinuityCounter; CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), buffer->size()); CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); } void MPEG2TSWriter::writeProgramMap() { Loading Loading @@ -794,7 +813,7 @@ void MPEG2TSWriter::writeProgramMap() { *ptr++ = 0x00; *ptr++ = 0x00; CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), buffer->size()); CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); } void MPEG2TSWriter::writeAccessUnit( Loading Loading @@ -890,7 +909,7 @@ void MPEG2TSWriter::writeAccessUnit( memcpy(ptr, accessUnit->data(), copy); CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), buffer->size()); CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); size_t offset = copy; while (offset < accessUnit->size()) { Loading Loading @@ -923,7 +942,7 @@ void MPEG2TSWriter::writeAccessUnit( } memcpy(ptr, accessUnit->data() + offset, copy); CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); offset += copy; Loading @@ -939,5 +958,13 @@ void MPEG2TSWriter::writeTS() { } } ssize_t MPEG2TSWriter::internalWrite(const void *data, size_t size) { if (mFile != NULL) { return fwrite(data, 1, size, mFile); } return (*mWriteFunc)(mWriteCookie, data, size); } } // namespace android Loading
include/media/stagefright/MPEG2TSWriter.h +10 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,10 @@ struct MPEG2TSWriter : public MediaWriter { MPEG2TSWriter(int fd); MPEG2TSWriter(const char *filename); MPEG2TSWriter( void *cookie, ssize_t (*write)(void *cookie, const void *data, size_t size)); virtual status_t addSource(const sp<MediaSource> &source); virtual status_t start(MetaData *param = NULL); virtual status_t stop(); Loading @@ -51,6 +55,10 @@ private: struct SourceInfo; FILE *mFile; void *mWriteCookie; ssize_t (*mWriteFunc)(void *cookie, const void *data, size_t size); sp<ALooper> mLooper; sp<AHandlerReflector<MPEG2TSWriter> > mReflector; Loading @@ -69,6 +77,8 @@ private: void writeProgramMap(); void writeAccessUnit(int32_t sourceIndex, const sp<ABuffer> &buffer); ssize_t internalWrite(const void *data, size_t size); DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSWriter); }; Loading
media/libstagefright/MPEG2TSWriter.cpp +34 −7 Original line number Diff line number Diff line Loading @@ -466,6 +466,8 @@ bool MPEG2TSWriter::SourceInfo::eosReceived() const { MPEG2TSWriter::MPEG2TSWriter(int fd) : mFile(fdopen(dup(fd), "wb")), mWriteCookie(NULL), mWriteFunc(NULL), mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), Loading @@ -475,6 +477,21 @@ MPEG2TSWriter::MPEG2TSWriter(int fd) MPEG2TSWriter::MPEG2TSWriter(const char *filename) : mFile(fopen(filename, "wb")), mWriteCookie(NULL), mWriteFunc(NULL), mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), mNumTSPacketsBeforeMeta(0) { init(); } MPEG2TSWriter::MPEG2TSWriter( void *cookie, ssize_t (*write)(void *cookie, const void *data, size_t size)) : mFile(NULL), mWriteCookie(cookie), mWriteFunc(write), mStarted(false), mNumSourcesDone(0), mNumTSPacketsWritten(0), Loading @@ -483,7 +500,7 @@ MPEG2TSWriter::MPEG2TSWriter(const char *filename) } void MPEG2TSWriter::init() { CHECK(mFile != NULL); CHECK(mFile != NULL || mWriteFunc != NULL); mLooper = new ALooper; mLooper->setName("MPEG2TSWriter"); Loading @@ -502,9 +519,11 @@ MPEG2TSWriter::~MPEG2TSWriter() { mLooper->unregisterHandler(mReflector->id()); mLooper->stop(); if (mFile != NULL) { fclose(mFile); mFile = NULL; } } status_t MPEG2TSWriter::addSource(const sp<MediaSource> &source) { CHECK(!mStarted); Loading Loading @@ -718,7 +737,7 @@ void MPEG2TSWriter::writeProgramAssociationTable() { static const unsigned kContinuityCounter = 5; buffer->data()[3] |= kContinuityCounter; CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), buffer->size()); CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); } void MPEG2TSWriter::writeProgramMap() { Loading Loading @@ -794,7 +813,7 @@ void MPEG2TSWriter::writeProgramMap() { *ptr++ = 0x00; *ptr++ = 0x00; CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), buffer->size()); CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); } void MPEG2TSWriter::writeAccessUnit( Loading Loading @@ -890,7 +909,7 @@ void MPEG2TSWriter::writeAccessUnit( memcpy(ptr, accessUnit->data(), copy); CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), buffer->size()); CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); size_t offset = copy; while (offset < accessUnit->size()) { Loading Loading @@ -923,7 +942,7 @@ void MPEG2TSWriter::writeAccessUnit( } memcpy(ptr, accessUnit->data() + offset, copy); CHECK_EQ(fwrite(buffer->data(), 1, buffer->size(), mFile), CHECK_EQ(internalWrite(buffer->data(), buffer->size()), buffer->size()); offset += copy; Loading @@ -939,5 +958,13 @@ void MPEG2TSWriter::writeTS() { } } ssize_t MPEG2TSWriter::internalWrite(const void *data, size_t size) { if (mFile != NULL) { return fwrite(data, 1, size, mFile); } return (*mWriteFunc)(mWriteCookie, data, size); } } // namespace android