summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MediaMuxer.cpp
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2014-02-07 16:59:35 -0800
committerRobert Shih <robertshih@google.com>2014-03-06 14:27:56 -0800
commit343947abc8b7c126f966fd32a0b18bff6c2cecd1 (patch)
tree211261c7f1985676176ce01891ba0529300aef55 /media/libstagefright/MediaMuxer.cpp
parent7a0662afeba50b78f43ce24539230cace30c3cfd (diff)
downloadframeworks_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.cpp27
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() {