Clean up the native code to match Java update

1. Add flags to match the java side change.
2. Update the interface.

bug:7991013

Change-Id: I8ffe84c466b2a68e2e1e48b35b78db9e44640265
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);
 }