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

Commit e991630c authored by Santiago Seifert's avatar Santiago Seifert Committed by Android (Google) Code Review
Browse files

Merge "Add playback session id to MediaExtractor"

parents 338a1629 250e65c2
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -21980,7 +21980,7 @@ package android.media {
    ctor public MediaDrmResetException(String);
  }
  public final class MediaExtractor {
  public final class MediaExtractor implements android.media.metrics.PlaybackComponent {
    ctor public MediaExtractor();
    method public boolean advance();
    method protected void finalize();
@@ -21989,6 +21989,7 @@ package android.media {
    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.PersistableBundle getMetrics();
    method @NonNull public String getPlaybackId();
    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
@@ -22010,6 +22011,7 @@ package android.media {
    method public void setDataSource(@NonNull java.io.FileDescriptor) throws java.io.IOException;
    method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) throws java.io.IOException;
    method public void setMediaCas(@NonNull android.media.MediaCas);
    method public void setPlaybackId(@NonNull String);
    method public void unselectTrack(int);
    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
    field public static final int SAMPLE_FLAG_PARTIAL_FRAME = 4; // 0x4
+19 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.media.metrics.PlaybackComponent;
import android.net.Uri;
import android.os.IBinder;
import android.os.IHwBinder;
@@ -40,6 +41,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;

@@ -73,8 +75,10 @@ import java.util.stream.Collectors;
 * <p>This class requires the {@link android.Manifest.permission#INTERNET} permission
 * when used with network-based content.
 */
final public class MediaExtractor {
public final class MediaExtractor implements PlaybackComponent {

    public MediaExtractor() {
        mPlaybackId = "";
        native_setup();
    }

@@ -767,6 +771,18 @@ final public class MediaExtractor {
     */
    public native boolean hasCacheReachedEndOfStream();

    @Override
    public void setPlaybackId(@NonNull String playbackId) {
        mPlaybackId = Objects.requireNonNull(playbackId);
        native_setPlaybackId(playbackId);
    }

    @NonNull
    @Override
    public String getPlaybackId() {
        return mPlaybackId;
    }

    /**
     *  Return Metrics data about the current media container.
     *
@@ -784,6 +800,7 @@ final public class MediaExtractor {
        return bundle;
    }

    private native void native_setPlaybackId(String playbackId);
    private native PersistableBundle native_getMetrics();

    private static native final void native_init();
@@ -796,6 +813,7 @@ final public class MediaExtractor {
    }

    private MediaCas mMediaCas;
    private String mPlaybackId;

    private long mNativeContext;

+24 −1
Original line number Diff line number Diff line
@@ -282,7 +282,6 @@ status_t JMediaExtractor::getMetrics(Parcel *reply) const {
    return status;
}


status_t JMediaExtractor::getSampleMeta(sp<MetaData> *sampleMeta) {
    return mImpl->getSampleMeta(sampleMeta);
}
@@ -295,6 +294,10 @@ status_t JMediaExtractor::getAudioPresentations(size_t trackIdx,
        AudioPresentationCollection *presentations) const {
    return mImpl->getAudioPresentations(trackIdx, presentations);
}

status_t JMediaExtractor::setPlaybackId(const String8 &playbackId) {
    return mImpl->setPlaybackId(playbackId);
}
}  // namespace android

////////////////////////////////////////////////////////////////////////////////
@@ -920,6 +923,23 @@ android_media_MediaExtractor_native_getMetrics(JNIEnv * env, jobject thiz)
    return mybundle;
}

static void
android_media_MediaExtractor_native_setPlaybackId(
        JNIEnv * env, jobject thiz, jstring playbackIdJString)
{
    ALOGV("android_media_MediaExtractor_native_setPlaybackId");

    sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz);
    if (extractor == nullptr) {
        jniThrowException(env, "java/lang/IllegalStateException", nullptr);
    }

    const char* playbackId = env->GetStringUTFChars(playbackIdJString, nullptr);
    if (extractor->setPlaybackId(String8(playbackId)) != OK) {
        ALOGE("setPlaybackId failed");
    }
    env->ReleaseStringUTFChars(playbackIdJString, playbackId);
}

static const JNINativeMethod gMethods[] = {
    { "release", "()V", (void *)android_media_MediaExtractor_release },
@@ -990,6 +1010,9 @@ static const JNINativeMethod gMethods[] = {
    {"native_getMetrics",          "()Landroid/os/PersistableBundle;",
      (void *)android_media_MediaExtractor_native_getMetrics},

    { "native_setPlaybackId", "(Ljava/lang/String;)V",
      (void *)android_media_MediaExtractor_native_setPlaybackId},

    { "native_getAudioPresentations", "(I)Ljava/util/List;",
      (void *)android_media_MediaExtractor_getAudioPresentations },
};
+2 −0
Original line number Diff line number Diff line
@@ -70,6 +70,8 @@ struct JMediaExtractor : public RefBase {
    status_t getAudioPresentations(size_t trackIdx,
            AudioPresentationCollection *presentations) const;

    status_t setPlaybackId(const String8& playbackId);

protected:
    virtual ~JMediaExtractor();