Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04eaec03 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "MediaPlayer2: rename Media2DataSource to DataSourceCallback"

parents 9a42260b 073e1b11
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -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;
        }
    }
+3 −3
Original line number Diff line number Diff line
@@ -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.
     *
+4 −4
Original line number Diff line number Diff line
@@ -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.
+1 −1
Original line number Diff line number Diff line
@@ -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",
+18 −18
Original line number Diff line number Diff line
@@ -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");
}

Loading