Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -12828,6 +12828,7 @@ package android.media { ctor public MediaMuxer(java.lang.String, int) throws java.io.IOException; method public int addTrack(android.media.MediaFormat); method public void release(); method public void setLocation(float, float); method public void setOrientationHint(int); method public void start(); method public void stop(); media/java/android/media/MediaMuxer.java +36 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ final public class MediaMuxer { Object[] values); private static native void nativeSetOrientationHint(int nativeObject, int degrees); private static native void nativeSetLocation(int nativeObject, int latitude, int longitude); private static native void nativeWriteSampleData(int nativeObject, int trackIndex, ByteBuffer byteBuf, int offset, int size, long presentationTimeUs, int flags); Loading Loading @@ -164,6 +165,41 @@ final public class MediaMuxer { } } /** * Set and store the geodata (latitude and longitude) in the output file. * This method should be called before {@link #start}. The geodata is stored * in udta box if the output format is * {@link OutputFormat#MUXER_OUTPUT_MPEG_4}, and is ignored for other output * formats. The geodata is stored according to ISO-6709 standard. * * @param latitude Latitude in degrees. Its value must be in the range [-90, * 90]. * @param longitude Longitude in degrees. Its value must be in the range * [-180, 180]. * @throws IllegalArgumentException If the given latitude or longitude is out * of range. * @throws IllegalStateException If this method is called after {@link #start}. */ public void setLocation(float latitude, float longitude) { int latitudex10000 = (int) (latitude * 10000 + 0.5); int longitudex10000 = (int) (longitude * 10000 + 0.5); if (latitudex10000 > 900000 || latitudex10000 < -900000) { String msg = "Latitude: " + latitude + " out of range."; throw new IllegalArgumentException(msg); } if (longitudex10000 > 1800000 || longitudex10000 < -1800000) { String msg = "Longitude: " + longitude + " out of range"; throw new IllegalArgumentException(msg); } if (mState == MUXER_STATE_INITIALIZED && mNativeObject != 0) { nativeSetLocation(mNativeObject, latitudex10000, longitudex10000); } else { throw new IllegalStateException("Can't set location due to wrong state."); } } /** * Starts the muxer. * <p>Make sure this is called after {@link #addTrack} and before Loading media/jni/android_media_MediaMuxer.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,18 @@ static void android_media_MediaMuxer_setOrientationHint( } static void android_media_MediaMuxer_setLocation( JNIEnv *env, jclass clazz, jint nativeObject, jint latitude, jint longitude) { MediaMuxer* muxer = reinterpret_cast<MediaMuxer *>(nativeObject); status_t res = muxer->setLocation(latitude, longitude); if (res != OK) { jniThrowException(env, "java/lang/IllegalStateException", "Failed to set location"); return; } } static void android_media_MediaMuxer_start(JNIEnv *env, jclass clazz, jint nativeObject) { sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject)); Loading Loading @@ -216,6 +228,9 @@ static JNINativeMethod gMethods[] = { { "nativeSetOrientationHint", "(II)V", (void *)android_media_MediaMuxer_setOrientationHint}, { "nativeSetLocation", "(III)V", (void *)android_media_MediaMuxer_setLocation}, { "nativeStart", "(I)V", (void *)android_media_MediaMuxer_start}, { "nativeWriteSampleData", "(IILjava/nio/ByteBuffer;IIJI)V", Loading Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -12828,6 +12828,7 @@ package android.media { ctor public MediaMuxer(java.lang.String, int) throws java.io.IOException; method public int addTrack(android.media.MediaFormat); method public void release(); method public void setLocation(float, float); method public void setOrientationHint(int); method public void start(); method public void stop();
media/java/android/media/MediaMuxer.java +36 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ final public class MediaMuxer { Object[] values); private static native void nativeSetOrientationHint(int nativeObject, int degrees); private static native void nativeSetLocation(int nativeObject, int latitude, int longitude); private static native void nativeWriteSampleData(int nativeObject, int trackIndex, ByteBuffer byteBuf, int offset, int size, long presentationTimeUs, int flags); Loading Loading @@ -164,6 +165,41 @@ final public class MediaMuxer { } } /** * Set and store the geodata (latitude and longitude) in the output file. * This method should be called before {@link #start}. The geodata is stored * in udta box if the output format is * {@link OutputFormat#MUXER_OUTPUT_MPEG_4}, and is ignored for other output * formats. The geodata is stored according to ISO-6709 standard. * * @param latitude Latitude in degrees. Its value must be in the range [-90, * 90]. * @param longitude Longitude in degrees. Its value must be in the range * [-180, 180]. * @throws IllegalArgumentException If the given latitude or longitude is out * of range. * @throws IllegalStateException If this method is called after {@link #start}. */ public void setLocation(float latitude, float longitude) { int latitudex10000 = (int) (latitude * 10000 + 0.5); int longitudex10000 = (int) (longitude * 10000 + 0.5); if (latitudex10000 > 900000 || latitudex10000 < -900000) { String msg = "Latitude: " + latitude + " out of range."; throw new IllegalArgumentException(msg); } if (longitudex10000 > 1800000 || longitudex10000 < -1800000) { String msg = "Longitude: " + longitude + " out of range"; throw new IllegalArgumentException(msg); } if (mState == MUXER_STATE_INITIALIZED && mNativeObject != 0) { nativeSetLocation(mNativeObject, latitudex10000, longitudex10000); } else { throw new IllegalStateException("Can't set location due to wrong state."); } } /** * Starts the muxer. * <p>Make sure this is called after {@link #addTrack} and before Loading
media/jni/android_media_MediaMuxer.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,18 @@ static void android_media_MediaMuxer_setOrientationHint( } static void android_media_MediaMuxer_setLocation( JNIEnv *env, jclass clazz, jint nativeObject, jint latitude, jint longitude) { MediaMuxer* muxer = reinterpret_cast<MediaMuxer *>(nativeObject); status_t res = muxer->setLocation(latitude, longitude); if (res != OK) { jniThrowException(env, "java/lang/IllegalStateException", "Failed to set location"); return; } } static void android_media_MediaMuxer_start(JNIEnv *env, jclass clazz, jint nativeObject) { sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject)); Loading Loading @@ -216,6 +228,9 @@ static JNINativeMethod gMethods[] = { { "nativeSetOrientationHint", "(II)V", (void *)android_media_MediaMuxer_setOrientationHint}, { "nativeSetLocation", "(III)V", (void *)android_media_MediaMuxer_setLocation}, { "nativeStart", "(I)V", (void *)android_media_MediaMuxer_start}, { "nativeWriteSampleData", "(IILjava/nio/ByteBuffer;IIJI)V", Loading