diff --git a/cmds/stagefright/muxer.cpp b/cmds/stagefright/muxer.cpp
index 1b127c7..fac2acc 100644
--- a/cmds/stagefright/muxer.cpp
+++ b/cmds/stagefright/muxer.cpp
@@ -69,7 +69,8 @@
     ALOGV("input file %s, output file %s", path, outputFileName);
     ALOGV("useAudio %d, useVideo %d", useAudio, useVideo);
 
-    sp<MediaMuxer> muxer = new MediaMuxer(outputFileName);
+    sp<MediaMuxer> muxer = new MediaMuxer(outputFileName,
+                                          MediaMuxer::OUTPUT_FORMAT_MPEG_4);
 
     size_t trackCount = extractor->countTracks();
     // Map the extractor's track index to the muxer's track index.
diff --git a/include/media/stagefright/MediaMuxer.h b/include/media/stagefright/MediaMuxer.h
index 27a141e..167d0d9 100644
--- a/include/media/stagefright/MediaMuxer.h
+++ b/include/media/stagefright/MediaMuxer.h
@@ -40,11 +40,25 @@
 // deleting the output file after stop.
 struct MediaMuxer : public RefBase {
 public:
+    // Please update media/java/android/media/MediaMuxer.java if the
+    // SampleFlags is updated.
+    enum SampleFlags {
+        SAMPLE_FLAG_SYNC = 1,
+    };
+
+    // Please update media/java/android/media/MediaMuxer.java if the
+    // OutputFormat is updated.
+    enum OutputFormat {
+        OUTPUT_FORMAT_MPEG_4 = 0,
+        OUTPUT_FORMAT_LIST_END // must be last - used to validate format type
+    };
+
     // Construct the muxer with the output file path.
-    MediaMuxer(const char* pathOut);
+    MediaMuxer(const char *path, OutputFormat format);
+
     // Construct the muxer with the file descriptor. Note that the MediaMuxer
     // will close this file at stop().
-    MediaMuxer(int fd);
+    MediaMuxer(int fd, OutputFormat format);
 
     virtual ~MediaMuxer();
 
@@ -94,6 +108,7 @@
     Mutex mMuxerLock;
 
     enum State {
+        UNINITED,
         INITED,
         STARTED,
         STOPPED
diff --git a/media/libstagefright/MediaMuxer.cpp b/media/libstagefright/MediaMuxer.cpp
index 30bed90..aefc270 100644
--- a/media/libstagefright/MediaMuxer.cpp
+++ b/media/libstagefright/MediaMuxer.cpp
@@ -35,14 +35,20 @@
 
 namespace android {
 
-MediaMuxer::MediaMuxer(const char* pathOut)
-    : mState(INITED) {
-    mWriter = new MPEG4Writer(pathOut);
+MediaMuxer::MediaMuxer(const char *path, OutputFormat format)
+    : mState(UNINITED) {
+    if (format == OUTPUT_FORMAT_MPEG_4) {
+        mWriter = new MPEG4Writer(path);
+        mState = INITED;
+    }
 }
 
-MediaMuxer::MediaMuxer(int fd)
-    : mState(INITED) {
-    mWriter = new MPEG4Writer(fd);
+MediaMuxer::MediaMuxer(int fd, OutputFormat format)
+    : mState(UNINITED) {
+    if (format == OUTPUT_FORMAT_MPEG_4) {
+        mWriter = new MPEG4Writer(fd);
+        mState = INITED;
+    }
 }
 
 MediaMuxer::~MediaMuxer() {
@@ -107,8 +113,6 @@
                                      int64_t timeUs, uint32_t flags) {
     Mutex::Autolock autoLock(mMuxerLock);
 
-    sp<MediaAdapter> currentTrack = mTrackList[trackIndex];
-
     if (buffer.get() == NULL) {
         ALOGE("WriteSampleData() get an NULL buffer.");
         return -EINVAL;
@@ -134,10 +138,11 @@
     // Just set the kKeyDecodingTime as the presentation time for now.
     metaData->setInt64(kKeyDecodingTime, timeUs);
 
-    if (flags & MediaCodec::BUFFER_FLAG_SYNCFRAME) {
+    if (flags & SAMPLE_FLAG_SYNC) {
         metaData->setInt32(kKeyIsSyncFrame, true);
     }
 
+    sp<MediaAdapter> currentTrack = mTrackList[trackIndex];
     // This pushBuffer will wait until the mediaBuffer is consumed.
     return currentTrack->pushBuffer(mediaBuffer);
 }
