summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MediaMuxer.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2013-03-12 10:40:20 -0700
committerztenghui <ztenghui@google.com>2013-03-14 10:47:31 -0700
commit5883d53cf8300d8b13a1a6ef3310d72a55e191c0 (patch)
treed280c84919e427787e307504606c5a2527124e59 /media/libstagefright/MediaMuxer.cpp
parentdbda1c852d68fde2e729ff2f8e85a406da73994b (diff)
downloadframeworks_av-5883d53cf8300d8b13a1a6ef3310d72a55e191c0.zip
frameworks_av-5883d53cf8300d8b13a1a6ef3310d72a55e191c0.tar.gz
frameworks_av-5883d53cf8300d8b13a1a6ef3310d72a55e191c0.tar.bz2
Make limitations of MPEG4Writer explicit
o No more than 2 tracks will be supported o No more than one video and/or one audio tracks will be supported o Only take video and/or audio track (for instance, no text tracks) o If there is no track before start() is called, bail out. At the same time, make sure the errors from addSource() report to addTrack(), not to start(). Bug: 7991013 Change-Id: I1ca35aaeb75b5448d75ed2c6c10dd12ecea720ab
Diffstat (limited to 'media/libstagefright/MediaMuxer.cpp')
-rw-r--r--media/libstagefright/MediaMuxer.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/media/libstagefright/MediaMuxer.cpp b/media/libstagefright/MediaMuxer.cpp
index aefc270..21841b3 100644
--- a/media/libstagefright/MediaMuxer.cpp
+++ b/media/libstagefright/MediaMuxer.cpp
@@ -76,17 +76,17 @@ ssize_t MediaMuxer::addTrack(const sp<AMessage> &format) {
convertMessageToMetaData(format, meta);
sp<MediaAdapter> newTrack = new MediaAdapter(meta);
- return mTrackList.add(newTrack);
+ status_t result = mWriter->addSource(newTrack);
+ if (result == OK) {
+ return mTrackList.add(newTrack);
+ }
+ return -1;
}
status_t MediaMuxer::start() {
Mutex::Autolock autoLock(mMuxerLock);
-
if (mState == INITED) {
mState = STARTED;
- for (size_t i = 0 ; i < mTrackList.size(); i++) {
- mWriter->addSource(mTrackList[i]);
- }
return mWriter->start();
} else {
ALOGE("start() is called in invalid state %d", mState);
@@ -100,7 +100,9 @@ status_t MediaMuxer::stop() {
if (mState == STARTED) {
mState = STOPPED;
for (size_t i = 0; i < mTrackList.size(); i++) {
- mTrackList[i]->stop();
+ if (mTrackList[i]->stop() != OK) {
+ return INVALID_OPERATION;
+ }
}
return mWriter->stop();
} else {