Merge "MediaPlayer2: rename Media2DataSource to DataSourceCallback"

This commit is contained in:
TreeHugger Robot
2018-11-29 16:27:21 +00:00
committed by Android (Google) Code Review
7 changed files with 52 additions and 52 deletions

View File

@@ -31,18 +31,18 @@ import android.annotation.NonNull;
*
*/
public class CallbackDataSourceDesc extends DataSourceDesc {
private Media2DataSource mMedia2DataSource;
private DataSourceCallback mDataSourceCallback;
private CallbackDataSourceDesc() {
}
/**
* Return the Media2DataSource of this data source.
* Return the DataSourceCallback of this data source.
* It's meaningful only when {@code getType} returns {@link #TYPE_CALLBACK}.
* @return the Media2DataSource of this data source
* @return the DataSourceCallback of this data source
*/
public Media2DataSource getMedia2DataSource() {
return mMedia2DataSource;
public DataSourceCallback getDataSourceCallback() {
return mDataSourceCallback;
}
/**
@@ -60,7 +60,7 @@ public class CallbackDataSourceDesc extends DataSourceDesc {
* </pre>
*/
public static class Builder extends BuilderBase<Builder> {
private Media2DataSource mMedia2DataSource;
private DataSourceCallback mDataSourceCallback;
/**
* Constructs a new Builder with the defaults.
@@ -79,7 +79,7 @@ public class CallbackDataSourceDesc extends DataSourceDesc {
if (dsd == null) {
return; // use default
}
mMedia2DataSource = dsd.mMedia2DataSource;
mDataSourceCallback = dsd.mDataSourceCallback;
}
/**
@@ -92,21 +92,21 @@ public class CallbackDataSourceDesc extends DataSourceDesc {
public @NonNull CallbackDataSourceDesc build() {
CallbackDataSourceDesc dsd = new CallbackDataSourceDesc();
super.build(dsd);
dsd.mMedia2DataSource = mMedia2DataSource;
dsd.mDataSourceCallback = mDataSourceCallback;
return dsd;
}
/**
* Sets the data source (Media2DataSource) to use.
* Sets the data source (DataSourceCallback) to use.
*
* @param m2ds the Media2DataSource for the media to play
* @param dscb the DataSourceCallback for the media to play
* @return the same Builder instance.
* @throws NullPointerException if m2ds is null.
* @throws NullPointerException if dscb is null.
*/
public @NonNull Builder setDataSource(@NonNull Media2DataSource m2ds) {
Media2Utils.checkArgument(m2ds != null, "data source cannot be null.");
mMedia2DataSource = m2ds;
public @NonNull Builder setDataSource(@NonNull DataSourceCallback dscb) {
Media2Utils.checkArgument(dscb != null, "data source cannot be null.");
mDataSourceCallback = dscb;
return this;
}
}

View File

@@ -27,12 +27,12 @@ import java.io.IOException;
*
* <p class="note">Methods of this interface may be called on multiple different
* threads. There will be a thread synchronization point between each call to ensure that
* modifications to the state of your Media2DataSource are visible to future calls. This means
* modifications to the state of your DataSourceCallback are visible to future calls. This means
* you don't need to do your own synchronization unless you're modifying the
* Media2DataSource from another thread while it's being used by the framework.</p>
* DataSourceCallback from another thread while it's being used by the framework.</p>
*
*/
public abstract class Media2DataSource implements Closeable {
public abstract class DataSourceCallback implements Closeable {
/**
* Called to request data from the given position.
*

View File

@@ -805,7 +805,7 @@ public class MediaPlayer2 implements AutoCloseable
CallbackDataSourceDesc cbDSD = (CallbackDataSourceDesc) dsd;
handleDataSource(isCurrent,
srcId,
cbDSD.getMedia2DataSource(),
cbDSD.getDataSourceCallback(),
cbDSD.getStartPosition(),
cbDSD.getEndPosition());
} else if (dsd instanceof FileDataSourceDesc) {
@@ -1007,15 +1007,15 @@ public class MediaPlayer2 implements AutoCloseable
/**
* @throws IllegalStateException if it is called in an invalid state
* @throws IllegalArgumentException if dataSource is not a valid Media2DataSource
* @throws IllegalArgumentException if dataSource is not a valid DataSourceCallback
*/
private void handleDataSource(boolean isCurrent, long srcId, Media2DataSource dataSource,
private void handleDataSource(boolean isCurrent, long srcId, DataSourceCallback dataSource,
long startPos, long endPos) {
nativeHandleDataSourceCallback(isCurrent, srcId, dataSource, startPos, endPos);
}
private native void nativeHandleDataSourceCallback(
boolean isCurrent, long srcId, Media2DataSource dataSource,
boolean isCurrent, long srcId, DataSourceCallback dataSource,
long startPos, long endPos);
// return true if there is a next data source, false otherwise.

View File

@@ -88,7 +88,7 @@ cc_library_shared {
name: "libmedia2_jni",
srcs: [
"android_media_Media2DataSource.cpp",
"android_media_DataSourceCallback.cpp",
"android_media_MediaMetricsJNI.cpp",
"android_media_MediaPlayer2.cpp",
"android_media_SyncParams.cpp",

View File

@@ -15,10 +15,10 @@
*/
//#define LOG_NDEBUG 0
#define LOG_TAG "JMedia2DataSource-JNI"
#define LOG_TAG "JDataSourceCallback-JNI"
#include <utils/Log.h>
#include "android_media_Media2DataSource.h"
#include "android_media_DataSourceCallback.h"
#include "log/log.h"
#include "jni.h"
@@ -33,14 +33,14 @@ namespace android {
static const size_t kBufferSize = 64 * 1024;
JMedia2DataSource::JMedia2DataSource(JNIEnv* env, jobject source)
JDataSourceCallback::JDataSourceCallback(JNIEnv* env, jobject source)
: mJavaObjStatus(OK),
mSizeIsCached(false),
mCachedSize(0) {
mMedia2DataSourceObj = env->NewGlobalRef(source);
CHECK(mMedia2DataSourceObj != NULL);
mDataSourceCallbackObj = env->NewGlobalRef(source);
CHECK(mDataSourceCallbackObj != NULL);
ScopedLocalRef<jclass> media2DataSourceClass(env, env->GetObjectClass(mMedia2DataSourceObj));
ScopedLocalRef<jclass> media2DataSourceClass(env, env->GetObjectClass(mDataSourceCallbackObj));
CHECK(media2DataSourceClass.get() != NULL);
mReadAtMethod = env->GetMethodID(media2DataSourceClass.get(), "readAt", "(J[BII)I");
@@ -55,17 +55,17 @@ JMedia2DataSource::JMedia2DataSource(JNIEnv* env, jobject source)
CHECK(mByteArrayObj != NULL);
}
JMedia2DataSource::~JMedia2DataSource() {
JDataSourceCallback::~JDataSourceCallback() {
JNIEnv* env = JavaVMHelper::getJNIEnv();
env->DeleteGlobalRef(mMedia2DataSourceObj);
env->DeleteGlobalRef(mDataSourceCallbackObj);
env->DeleteGlobalRef(mByteArrayObj);
}
status_t JMedia2DataSource::initCheck() const {
status_t JDataSourceCallback::initCheck() const {
return OK;
}
ssize_t JMedia2DataSource::readAt(off64_t offset, void *data, size_t size) {
ssize_t JDataSourceCallback::readAt(off64_t offset, void *data, size_t size) {
Mutex::Autolock lock(mLock);
if (mJavaObjStatus != OK) {
@@ -76,7 +76,7 @@ ssize_t JMedia2DataSource::readAt(off64_t offset, void *data, size_t size) {
}
JNIEnv* env = JavaVMHelper::getJNIEnv();
jint numread = env->CallIntMethod(mMedia2DataSourceObj, mReadAtMethod,
jint numread = env->CallIntMethod(mDataSourceCallbackObj, mReadAtMethod,
(jlong)offset, mByteArrayObj, (jint)0, (jint)size);
if (env->ExceptionCheck()) {
ALOGW("An exception occurred in readAt()");
@@ -106,7 +106,7 @@ ssize_t JMedia2DataSource::readAt(off64_t offset, void *data, size_t size) {
return numread;
}
status_t JMedia2DataSource::getSize(off64_t* size) {
status_t JDataSourceCallback::getSize(off64_t* size) {
Mutex::Autolock lock(mLock);
if (mJavaObjStatus != OK) {
@@ -118,7 +118,7 @@ status_t JMedia2DataSource::getSize(off64_t* size) {
}
JNIEnv* env = JavaVMHelper::getJNIEnv();
*size = env->CallLongMethod(mMedia2DataSourceObj, mGetSizeMethod);
*size = env->CallLongMethod(mDataSourceCallbackObj, mGetSizeMethod);
if (env->ExceptionCheck()) {
ALOGW("An exception occurred in getSize()");
jniLogException(env, ANDROID_LOG_WARN, LOG_TAG);
@@ -139,20 +139,20 @@ status_t JMedia2DataSource::getSize(off64_t* size) {
return OK;
}
void JMedia2DataSource::close() {
void JDataSourceCallback::close() {
Mutex::Autolock lock(mLock);
JNIEnv* env = JavaVMHelper::getJNIEnv();
env->CallVoidMethod(mMedia2DataSourceObj, mCloseMethod);
env->CallVoidMethod(mDataSourceCallbackObj, mCloseMethod);
// The closed state is effectively the same as an error state.
mJavaObjStatus = UNKNOWN_ERROR;
}
String8 JMedia2DataSource::toString() {
return String8::format("JMedia2DataSource(pid %d, uid %d)", getpid(), getuid());
String8 JDataSourceCallback::toString() {
return String8::format("JDataSourceCallback(pid %d, uid %d)", getpid(), getuid());
}
String8 JMedia2DataSource::getMIMEType() const {
String8 JDataSourceCallback::getMIMEType() const {
return String8("application/octet-stream");
}

View File

@@ -14,8 +14,8 @@
* limitations under the License.
*/
#ifndef _ANDROID_MEDIA_MEDIA2DATASOURCE_H_
#define _ANDROID_MEDIA_MEDIA2DATASOURCE_H_
#ifndef _ANDROID_MEDIA_DATASOURCECALLBACK_H_
#define _ANDROID_MEDIA_DATASOURCECALLBACK_H_
#include "jni.h"
@@ -26,16 +26,16 @@
namespace android {
// The native counterpart to a Java android.media.Media2DataSource. It inherits from
// The native counterpart to a Java android.media.DataSourceCallback. It inherits from
// DataSource.
//
// If the java DataSource returns an error or throws an exception it
// will be considered to be in a broken state, and the only further call this
// will make is to close().
class JMedia2DataSource : public DataSource {
class JDataSourceCallback : public DataSource {
public:
JMedia2DataSource(JNIEnv *env, jobject source);
virtual ~JMedia2DataSource();
JDataSourceCallback(JNIEnv *env, jobject source);
virtual ~JDataSourceCallback();
virtual status_t initCheck() const override;
virtual ssize_t readAt(off64_t offset, void *data, size_t size) override;
@@ -56,15 +56,15 @@ private:
bool mSizeIsCached;
off64_t mCachedSize;
jobject mMedia2DataSourceObj;
jobject mDataSourceCallbackObj;
jmethodID mReadAtMethod;
jmethodID mGetSizeMethod;
jmethodID mCloseMethod;
jbyteArray mByteArrayObj;
DISALLOW_EVIL_CONSTRUCTORS(JMedia2DataSource);
DISALLOW_EVIL_CONSTRUCTORS(JDataSourceCallback);
};
} // namespace android
#endif // _ANDROID_MEDIA_MEDIA2DATASOURCE_H_
#endif // _ANDROID_MEDIA_DATASOURCECALLBACK_H_

View File

@@ -46,7 +46,7 @@
#include "utils/KeyedVector.h"
#include "utils/String8.h"
#include "android_media_BufferingParams.h"
#include "android_media_Media2DataSource.h"
#include "android_media_DataSourceCallback.h"
#include "android_media_MediaMetricsJNI.h"
#include "android_media_PlaybackParams.h"
#include "android_media_SyncParams.h"
@@ -423,7 +423,7 @@ android_media_MediaPlayer2_handleDataSourceCallback(
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
return;
}
sp<DataSource> callbackDataSource = new JMedia2DataSource(env, dataSource);
sp<DataSource> callbackDataSource = new JDataSourceCallback(env, dataSource);
sp<DataSourceDesc> dsd = new DataSourceDesc();
dsd->mId = srcId;
dsd->mType = DataSourceDesc::TYPE_CALLBACK;
@@ -1390,7 +1390,7 @@ static const JNINativeMethod gMethods[] = {
},
{
"nativeHandleDataSourceCallback",
"(ZJLandroid/media/Media2DataSource;JJ)V",
"(ZJLandroid/media/DataSourceCallback;JJ)V",
(void *)android_media_MediaPlayer2_handleDataSourceCallback
},
{"nativePlayNextDataSource", "(J)V", (void *)android_media_MediaPlayer2_playNextDataSource},