diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/MediaMuxer.java | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/media/java/android/media/MediaMuxer.java b/media/java/android/media/MediaMuxer.java index e5c97e7..f518ab2 100644 --- a/media/java/android/media/MediaMuxer.java +++ b/media/java/android/media/MediaMuxer.java @@ -17,13 +17,11 @@ package android.media; import android.media.MediaCodec.BufferInfo; - import dalvik.system.CloseGuard; -import java.io.File; import java.io.FileDescriptor; -import java.io.FileOutputStream; import java.io.IOException; +import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.util.Map; @@ -79,6 +77,7 @@ final public class MediaMuxer { private OutputFormat() {} /** MPEG4 media file format*/ public static final int MUXER_OUTPUT_MPEG_4 = 0; + public static final int MUXER_OUTPUT_WEBM = 1; }; // All the native functions are listed here. @@ -120,20 +119,22 @@ final public class MediaMuxer { if (path == null) { throw new IllegalArgumentException("path must not be null"); } - if (format != OutputFormat.MUXER_OUTPUT_MPEG_4) { + if (format != OutputFormat.MUXER_OUTPUT_MPEG_4 && + format != OutputFormat.MUXER_OUTPUT_WEBM) { throw new IllegalArgumentException("format is invalid"); } - FileOutputStream fos = null; + // Use RandomAccessFile so we can open the file with RW access; + // RW access allows the native writer to memory map the output file. + RandomAccessFile file = null; try { - File file = new File(path); - fos = new FileOutputStream(file); - FileDescriptor fd = fos.getFD(); + file = new RandomAccessFile(path, "rws"); + FileDescriptor fd = file.getFD(); mNativeObject = nativeSetup(fd, format); mState = MUXER_STATE_INITIALIZED; mCloseGuard.open("release"); } finally { - if (fos != null) { - fos.close(); + if (file != null) { + file.close(); } } } |