summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorztenghui <ztenghui@google.com>2013-03-08 23:13:07 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-03-08 23:13:08 +0000
commitdbda1c852d68fde2e729ff2f8e85a406da73994b (patch)
tree53bccb4964a3d3b1063237b5b10eeb80eb1b6d2d
parent96aeef2b4f51b06cb7f9ccbb04df48b305550b67 (diff)
parentafde4e56566af19b36f1fe5e7aa7f226bf1703dd (diff)
downloadframeworks_av-dbda1c852d68fde2e729ff2f8e85a406da73994b.zip
frameworks_av-dbda1c852d68fde2e729ff2f8e85a406da73994b.tar.gz
frameworks_av-dbda1c852d68fde2e729ff2f8e85a406da73994b.tar.bz2
Merge "Clean up the native code to match Java update" into jb-mr2-dev
-rw-r--r--cmds/stagefright/muxer.cpp3
-rw-r--r--include/media/stagefright/MediaMuxer.h19
-rw-r--r--media/libstagefright/MediaMuxer.cpp23
3 files changed, 33 insertions, 12 deletions
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 @@ static int muxing(
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 @@ struct MPEG4Writer;
// 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 @@ private:
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 @@ status_t MediaMuxer::writeSampleData(const sp<ABuffer> &buffer, size_t trackInde
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 @@ status_t MediaMuxer::writeSampleData(const sp<ABuffer> &buffer, size_t trackInde
// 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);
}