diff options
author | Robert Shih <robertshih@google.com> | 2014-02-07 16:59:35 -0800 |
---|---|---|
committer | Robert Shih <robertshih@google.com> | 2014-03-06 14:27:56 -0800 |
commit | 343947abc8b7c126f966fd32a0b18bff6c2cecd1 (patch) | |
tree | 211261c7f1985676176ce01891ba0529300aef55 /media/libstagefright/MediaMuxer.cpp | |
parent | 7a0662afeba50b78f43ce24539230cace30c3cfd (diff) | |
download | frameworks_av-343947abc8b7c126f966fd32a0b18bff6c2cecd1.zip frameworks_av-343947abc8b7c126f966fd32a0b18bff6c2cecd1.tar.gz frameworks_av-343947abc8b7c126f966fd32a0b18bff6c2cecd1.tar.bz2 |
Stagefright: added WebM muxer.
Change-Id: I50bbf9c6f089b205d5ecef1371bfdd2028b3b358
Diffstat (limited to 'media/libstagefright/MediaMuxer.cpp')
-rw-r--r-- | media/libstagefright/MediaMuxer.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/media/libstagefright/MediaMuxer.cpp b/media/libstagefright/MediaMuxer.cpp index d87e910..90335ee 100644 --- a/media/libstagefright/MediaMuxer.cpp +++ b/media/libstagefright/MediaMuxer.cpp @@ -16,6 +16,9 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "MediaMuxer" + +#include "webm/WebmWriter.h" + #include <utils/Log.h> #include <media/stagefright/MediaMuxer.h> @@ -36,19 +39,30 @@ namespace android { MediaMuxer::MediaMuxer(const char *path, OutputFormat format) - : mState(UNINITIALIZED) { + : mFormat(format), + mState(UNINITIALIZED) { if (format == OUTPUT_FORMAT_MPEG_4) { mWriter = new MPEG4Writer(path); + } else if (format == OUTPUT_FORMAT_WEBM) { + mWriter = new WebmWriter(path); + } + + if (mWriter != NULL) { mFileMeta = new MetaData; mState = INITIALIZED; } - } MediaMuxer::MediaMuxer(int fd, OutputFormat format) - : mState(UNINITIALIZED) { + : mFormat(format), + mState(UNINITIALIZED) { if (format == OUTPUT_FORMAT_MPEG_4) { mWriter = new MPEG4Writer(fd); + } else if (format == OUTPUT_FORMAT_WEBM) { + mWriter = new WebmWriter(fd); + } + + if (mWriter != NULL) { mFileMeta = new MetaData; mState = INITIALIZED; } @@ -109,8 +123,13 @@ status_t MediaMuxer::setLocation(int latitude, int longitude) { ALOGE("setLocation() must be called before start()."); return INVALID_OPERATION; } + if (mFormat != OUTPUT_FORMAT_MPEG_4) { + ALOGE("setLocation() is only supported for .mp4 output."); + return INVALID_OPERATION; + } + ALOGV("Setting location: latitude = %d, longitude = %d", latitude, longitude); - return mWriter->setGeoData(latitude, longitude); + return static_cast<MPEG4Writer*>(mWriter.get())->setGeoData(latitude, longitude); } status_t MediaMuxer::start() { |