summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-11-07 11:41:21 -0800
committerSteve Kondik <steve@cyngn.com>2015-11-07 13:11:50 -0800
commit32ed0738affd158b7f8fd7ce978aafda38d8d8b6 (patch)
treef9dbf306f27ea96a0f90d48bca9607578a2bb7dc /media
parent3fe8894faf54d51f6fe146fc3735ccb75cb05c2e (diff)
downloadframeworks_base-32ed0738affd158b7f8fd7ce978aafda38d8d8b6.zip
frameworks_base-32ed0738affd158b7f8fd7ce978aafda38d8d8b6.tar.gz
frameworks_base-32ed0738affd158b7f8fd7ce978aafda38d8d8b6.tar.bz2
MediaRecorder: Add pause interface
- add pause in java level - add pause in jni level CRs-Fixed: 587051 Add 2 APIs (suspend/resume) in MediaPlayer - API:suspend() will just pause the player and release all the decoders to replace release() which will release the whole player - API:resume() will just init the decoders again, then start() will be called to start to play the streaming Change-Id: Ia0c38bd827f21261b2bd87c04778e86362003344
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/MediaPlayer.java17
-rw-r--r--media/java/android/media/MediaRecorder.java7
-rw-r--r--media/jni/Android.mk3
-rw-r--r--media/jni/android_media_MediaPlayer.cpp34
-rw-r--r--media/jni/android_media_MediaRecorder.cpp13
5 files changed, 63 insertions, 11 deletions
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 13b2878..2b685f0 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -3454,6 +3454,23 @@ public class MediaPlayer implements SubtitleController.Listener
mode == VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
}
+ /** @hide
+ */
+ public boolean suspend() {
+ stayAwake(false);
+ return _suspend();
+ }
+
+ private native boolean _suspend();
+
+ /** @hide
+ */
+ public boolean resume() {
+ return _resume();
+ }
+
+ private native boolean _resume();
+
/** @hide */
static class TimeProvider implements MediaPlayer.OnSeekCompleteListener,
MediaTimeProvider {
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 3a21fe9..65134c5 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -807,14 +807,9 @@ public class MediaRecorder
*/
public native void start() throws IllegalStateException;
-
/** @hide
*/
- public void pause() throws IllegalStateException
- {
- setParameter("pause=1");
- }
-
+ public native void pause() throws IllegalStateException;
/**
* Stops recording. Call this after start(). Once recording is stopped,
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
index 4d039c5..79557bc 100644
--- a/media/jni/Android.mk
+++ b/media/jni/Android.mk
@@ -52,8 +52,6 @@ LOCAL_REQUIRED_MODULES := \
LOCAL_STATIC_LIBRARIES := \
libstagefright_amrnbenc
-LOCAL_WHOLE_STATIC_LIBRARIES := libavmediaextentions
-
LOCAL_C_INCLUDES += \
external/libexif/ \
external/tremor/Tremor \
@@ -65,7 +63,6 @@ LOCAL_C_INCLUDES += \
frameworks/av/media/libstagefright/codecs/amrnb/common \
frameworks/av/media/libstagefright/codecs/amrnb/common/include \
frameworks/av/media/mtp \
- frameworks/av/media/libavextensions \
frameworks/native/include/media/openmax \
$(call include-path-for, libhardware)/hardware \
system/media/camera/include \
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 7fe5f90..88670ea 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -1191,6 +1191,38 @@ android_media_MediaPlayer_setNextMediaPlayer(JNIEnv *env, jobject thiz, jobject
;
}
+static jboolean
+android_media_MediaPlayer_suspend(JNIEnv *env, jobject thiz)
+{
+ sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
+ if (mp == NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException", NULL);
+ return false;
+ }
+
+ if (mp->suspend() != OK) {
+ return false;
+ }
+
+ return true;
+}
+
+static jboolean
+android_media_MediaPlayer_resume(JNIEnv *env, jobject thiz)
+{
+ sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
+ if (mp == NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException", NULL);
+ return false;
+ }
+
+ if (mp->resume() != OK) {
+ return false;
+ }
+
+ return true;
+}
+
// ----------------------------------------------------------------------------
static JNINativeMethod gMethods[] = {
@@ -1240,6 +1272,8 @@ static JNINativeMethod gMethods[] = {
{"native_pullBatteryData", "(Landroid/os/Parcel;)I", (void *)android_media_MediaPlayer_pullBatteryData},
{"native_setRetransmitEndpoint", "(Ljava/lang/String;I)I", (void *)android_media_MediaPlayer_setRetransmitEndpoint},
{"setNextMediaPlayer", "(Landroid/media/MediaPlayer;)V", (void *)android_media_MediaPlayer_setNextMediaPlayer},
+ {"_suspend", "()Z", (void *)android_media_MediaPlayer_suspend},
+ {"_resume", "()Z", (void *)android_media_MediaPlayer_resume},
};
// This function only registers the native methods
diff --git a/media/jni/android_media_MediaRecorder.cpp b/media/jni/android_media_MediaRecorder.cpp
index 2c75f63..21061db 100644
--- a/media/jni/android_media_MediaRecorder.cpp
+++ b/media/jni/android_media_MediaRecorder.cpp
@@ -40,8 +40,8 @@
#include <system/audio.h>
#include <android_runtime/android_view_Surface.h>
-#include <media/AVMediaExtensions.h>
#include "SeempLog.h"
+
// ----------------------------------------------------------------------------
using namespace android;
@@ -395,6 +395,14 @@ android_media_MediaRecorder_start(JNIEnv *env, jobject thiz)
}
static void
+android_media_MediaRecorder_pause(JNIEnv *env, jobject thiz)
+{
+ ALOGV("pause");
+ sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+ process_media_recorder_call(env, mr->pause(), "java/lang/RuntimeException", "pause failed.");
+}
+
+static void
android_media_MediaRecorder_stop(JNIEnv *env, jobject thiz)
{
ALOGV("stop");
@@ -465,7 +473,7 @@ android_media_MediaRecorder_native_setup(JNIEnv *env, jobject thiz, jobject weak
ScopedUtfChars opPackageNameStr(env, opPackageName);
- sp<MediaRecorder> mr = AVMediaUtils::get()->createMediaRecorder(String16(opPackageNameStr.c_str()));
+ sp<MediaRecorder> mr = new MediaRecorder(String16(opPackageNameStr.c_str()));
if (mr == NULL) {
jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
return;
@@ -531,6 +539,7 @@ static JNINativeMethod gMethods[] = {
{"getSurface", "()Landroid/view/Surface;", (void *)android_media_MediaRecorder_getSurface},
{"getMaxAmplitude", "()I", (void *)android_media_MediaRecorder_native_getMaxAmplitude},
{"start", "()V", (void *)android_media_MediaRecorder_start},
+ {"pause", "()V", (void *)android_media_MediaRecorder_pause},
{"stop", "()V", (void *)android_media_MediaRecorder_stop},
{"native_reset", "()V", (void *)android_media_MediaRecorder_native_reset},
{"release", "()V", (void *)android_media_MediaRecorder_release},