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

Commit b5ea2092 authored by Songyue Han's avatar Songyue Han Committed by Android (Google) Code Review
Browse files

Merge changes Ie37e8d35,Ie65a94ca,Ia79034f3,I0da5b070,Iff33b8a3 into main

* changes:
  Revert^2 "Java and JNI support for native CodecCapabilities."
  Revert^2 "Java and JNI support for native EncoderCapabilities."
  Revert^2 "Java and JNI support for native VideoCapabilities."
  Revert^2 "Java and JNI support for native PerformancePoint."
  Revert^2 "Java and JNI support for native AudioCapabilities."
parents 6894b12a 0979a07a
Loading
Loading
Loading
Loading
+3887 −3037

File changed.

Preview size limit exceeded, changes collapsed.

+33 −31
Original line number Diff line number Diff line
@@ -25,10 +25,12 @@ cc_library_shared {
    min_sdk_version: "",

    srcs: [
        "JetPlayer.cpp",
        "android_media_CodecCapabilities.cpp",
        "android_media_JetPlayer.cpp",
        "android_media_MediaCrypto.cpp",
        "android_media_MediaCodec.cpp",
        "android_media_MediaCodecList.cpp",
        "android_media_MediaCrypto.cpp",
        "android_media_MediaDataSource.cpp",
        "android_media_MediaDescrambler.cpp",
        "android_media_MediaDrm.cpp",
@@ -46,49 +48,49 @@ cc_library_shared {
        "android_mtp_MtpDatabase.cpp",
        "android_mtp_MtpDevice.cpp",
        "android_mtp_MtpServer.cpp",
        "JetPlayer.cpp",
    ],

    shared_libs: [
        "android.companion.virtual.virtualdevice_aidl-cpp",
        "android.hardware.cas.native@1.0",
        "android.hardware.cas@1.0",
        "android.hardware.drm-V1-ndk",
        "android.hardware.drm@1.3",
        "android.hardware.drm@1.4",
        "android.hardware.tv.tuner-V3-ndk",
        "android.hidl.memory@1.0",
        "android.hidl.token@1.0-utils",
        "audioclient-types-aidl-cpp",
        "av-types-aidl-cpp",
        "framework-permission-aidl-cpp",
        "libandroid_runtime",
        "libandroidfw",
        "libaudioclient",
        "libnativehelper",
        "libnativewindow",
        "libutils",
        "libbinder",
        "libcamera_client",
        "libcutils",
        "libgui",
        "libhidlallocatorutils",
        "libhidlbase",
        "libhwui",
        "liblog",
        "libmedia",
        "libmedia_codeclist",
        "libmedia_codeclist_capabilities",
        "libmedia_omx",
        "libmediametrics",
        "libmediadrm",
        "libmediadrmmetrics_consumer",
        "libhwui",
        "libui",
        "liblog",
        "libcutils",
        "libgui",
        "libstagefright",
        "libstagefright_foundation",
        "libcamera_client",
        "libmediametrics",
        "libmtp",
        "libnativehelper",
        "libnativewindow",
        "libpiex",
        "libandroidfw",
        "libhidlallocatorutils",
        "libhidlbase",
        "libsonivox",
        "libstagefright",
        "libstagefright_foundation",
        "libui",
        "libutils",
        "server_configurable_flags",
        "android.companion.virtual.virtualdevice_aidl-cpp",
        "android.hardware.cas@1.0",
        "android.hardware.cas.native@1.0",
        "android.hardware.drm@1.3",
        "android.hardware.drm@1.4",
        "android.hidl.memory@1.0",
        "android.hidl.token@1.0-utils",
        "android.hardware.drm-V1-ndk",
        "android.hardware.tv.tuner-V3-ndk",
    ],

    header_libs: [
@@ -97,11 +99,11 @@ cc_library_shared {
    ],

    static_libs: [
        "libgrallocusage",
        "libmedia_midiiowrapper",
        "android.companion.virtualdevice.flags-aconfig-cc",
        "android.media.codec-aconfig-cc",
        "android.media.playback.flags-aconfig-cc",
        "libgrallocusage",
        "libmedia_midiiowrapper",
    ],

    include_dirs: [
@@ -120,8 +122,8 @@ cc_library_shared {
        "-Wall",
        "-Werror",
        "-Wno-error=deprecated-declarations",
        "-Wunused",
        "-Wunreachable-code",
        "-Wunused",
    ],

    // TODO(b/330503129) Workaround build breakage.
@@ -146,8 +148,8 @@ cc_library_shared {
    shared_libs: [
        "android.hardware.graphics.bufferqueue@2.0",
        "android.hardware.tv.tuner-V3-ndk",
        "libbinder_ndk",
        "libandroid_runtime",
        "libbinder_ndk",
        "libcutils",
        "libfmq",
        "libhidlbase",
@@ -181,7 +183,7 @@ cc_library_shared {
        "-Wall",
        "-Werror",
        "-Wno-error=deprecated-declarations",
        "-Wunused",
        "-Wunreachable-code",
        "-Wunused",
    ],
}
+1053 −0

File added.

Preview size limit exceeded, changes collapsed.

+48 −0
Original line number Diff line number Diff line
/*
 * Copyright 2024, The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef _ANDROID_MEDIA_CODECCAPABILITIES_H_
#define _ANDROID_MEDIA_CODECCAPABILITIES_H_

#include "jni.h"

#include <media/CodecCapabilities.h>

namespace android {

struct JCodecCapabilities : public RefBase {
    JCodecCapabilities(std::shared_ptr<CodecCapabilities> codecCaps);

    std::shared_ptr<CodecCapabilities> getCodecCaps() const;

    int32_t getMaxSupportedInstances() const;
    std::string getMediaType() const;
    bool isFeatureRequired(const std::string& name) const;
    bool isFeatureSupported(const std::string& name) const;
    bool isFormatSupported(const sp<AMessage> &format) const;
    bool isRegular() const;
    std::vector<std::string> validFeatures() const;

private:
    std::shared_ptr<CodecCapabilities> mCodecCaps;
};

jobject convertToJavaCodecCapabiliites(
        JNIEnv *env, std::shared_ptr<CodecCapabilities> codecCaps);

}

#endif  // _ANDROID_MEDIA_CODECCAPABILITIES_H_
 No newline at end of file
+31 −8
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "MediaCodec-JNI"
#define ATRACE_TAG  ATRACE_TAG_VIDEO
#include <android_media_codec.h>
#include <utils/Log.h>
#include <utils/Trace.h>

@@ -24,6 +25,7 @@

#include "android_media_MediaCodec.h"

#include "android_media_CodecCapabilities.h"
#include "android_media_MediaCodecLinearBlock.h"
#include "android_media_MediaCrypto.h"
#include "android_media_MediaDescrambler.h"
@@ -140,6 +142,8 @@ static struct {
static struct {
    jclass capsClazz;
    jmethodID capsCtorId;
    jclass cpasImplClazz;
    jmethodID capsImplCtorId;
    jclass profileLevelClazz;
    jfieldID profileField;
    jfieldID levelField;
@@ -998,10 +1002,12 @@ static jobject getCodecCapabilitiesObject(
        env->SetIntArrayRegion(colorFormatsArray.get(), i, 1, &val);
    }

    return env->NewObject(
            gCodecInfo.capsClazz, gCodecInfo.capsCtorId,
    jobject javaCodecCapsImpl = env->NewObject(
            gCodecInfo.cpasImplClazz, gCodecInfo.capsImplCtorId,
            profileLevelArray.get(), colorFormatsArray.get(), isEncoder,
            defaultFormatRef.get(), detailsRef.get());

    return env->NewObject(gCodecInfo.capsClazz, gCodecInfo.capsCtorId, javaCodecCapsImpl);
}

status_t JMediaCodec::getCodecInfo(JNIEnv *env, jobject *codecInfoObject) const {
@@ -1029,11 +1035,18 @@ status_t JMediaCodec::getCodecInfo(JNIEnv *env, jobject *codecInfoObject) const
        env->NewObjectArray(mediaTypes.size(), gCodecInfo.capsClazz, NULL));

    for (size_t i = 0; i < mediaTypes.size(); i++) {
        jobject jCodecCaps = NULL;
        if (android::media::codec::provider_->native_capabilites()) {
            const std::shared_ptr<CodecCapabilities> codecCaps
                    = codecInfo->getCodecCapsFor(mediaTypes[i].c_str());
            jCodecCaps = convertToJavaCodecCapabiliites(env, codecCaps);
        } else {
            const sp<MediaCodecInfo::Capabilities> caps =
                    codecInfo->getCapabilitiesFor(mediaTypes[i].c_str());

        ScopedLocalRef<jobject> capsObj(env, getCodecCapabilitiesObject(
                env, mediaTypes[i].c_str(), isEncoder, caps));
            jCodecCaps = getCodecCapabilitiesObject(
                    env, mediaTypes[i].c_str(), isEncoder, caps);
        }
        ScopedLocalRef<jobject> capsObj(env, jCodecCaps);

        env->SetObjectArrayElement(capsArrayObj.get(), i, capsObj.get());
    }
@@ -3899,11 +3912,21 @@ static void android_media_MediaCodec_native_init(JNIEnv *env, jclass) {
    CHECK(clazz.get() != NULL);
    gCodecInfo.capsClazz = (jclass)env->NewGlobalRef(clazz.get());

    method = env->GetMethodID(clazz.get(), "<init>",
            "(Landroid/media/MediaCodecInfo$CodecCapabilities$CodecCapsIntf;)V");
    CHECK(method != NULL);
    gCodecInfo.capsCtorId = method;

    clazz.reset(env->FindClass(
            "android/media/MediaCodecInfo$CodecCapabilities$CodecCapsLegacyImpl"));
    CHECK(clazz.get() != NULL);
    gCodecInfo.cpasImplClazz = (jclass)env->NewGlobalRef(clazz.get());

    method = env->GetMethodID(clazz.get(), "<init>",
            "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZ"
            "Ljava/util/Map;Ljava/util/Map;)V");
    CHECK(method != NULL);
    gCodecInfo.capsCtorId = method;
    gCodecInfo.capsImplCtorId = method;

    clazz.reset(env->FindClass("android/media/MediaCodecInfo$CodecProfileLevel"));
    CHECK(clazz.get() != NULL);
Loading