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

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

Merge "Make Codec2 software service public"

parents fd7fa089 e55ed3fa
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -76,7 +76,11 @@ typedef std::array<std::shared_ptr<Codec2Client>, kNumClients> ClientList;

// Convenience methods to obtain known clients.
std::shared_ptr<Codec2Client> getClient(size_t index) {
    return Codec2Client::CreateFromService(kClientNames[index]);
    uint32_t serviceMask = ::android::base::GetUintProperty(
            "debug.media.codec2", uint32_t(0));
    return Codec2Client::CreateFromService(
            kClientNames[index],
            (serviceMask & (1 << index)) != 0);
}

ClientList getClientList() {
@@ -633,9 +637,13 @@ std::shared_ptr<Codec2Client> Codec2Client::CreateFromService(
            Base::tryGetService(instanceName);
    if (!baseStore) {
        if (waitForService) {
            ALOGE("Codec2.0 service inaccessible. Check the device manifest.");
            ALOGW("Codec2.0 service \"%s\" inaccessible. "
                  "Check the device manifest.",
                  instanceName);
        } else {
            ALOGW("Codec2.0 service not available right now. Try again later.");
            ALOGD("Codec2.0 service \"%s\" unavailable right now. "
                  "Try again later.",
                  instanceName);
        }
        return nullptr;
    }
+0 −55
Original line number Diff line number Diff line
@@ -37,58 +37,3 @@ cc_binary {
    compile_multilib: "32",
}
cc_library_shared {
    name: "libcodec2_serviceregistrant",
    // need vendor version for update packaging, system version may have more dependencies
    vendor_available: true,
    srcs: [
        "C2SoftwareCodecServiceRegistrant.cpp",
    ],

    header_libs: [
        "libmedia_headers",
    ],

    shared_libs: [
        "android.hardware.media.c2@1.0",
        "libcodec2_hidl@1.0",
        "libcodec2_vndk",
        "liblog",
        "libutils",
    ],

    // Codecs
    runtime_libs: [
        "libcodec2_soft_avcdec",
        "libcodec2_soft_avcenc",
        "libcodec2_soft_aacdec",
        "libcodec2_soft_aacenc",
        "libcodec2_soft_amrnbdec",
        "libcodec2_soft_amrnbenc",
        "libcodec2_soft_amrwbdec",
        "libcodec2_soft_amrwbenc",
        "libcodec2_soft_hevcdec",
        "libcodec2_soft_g711alawdec",
        "libcodec2_soft_g711mlawdec",
        "libcodec2_soft_mpeg2dec",
        "libcodec2_soft_h263dec",
        "libcodec2_soft_h263enc",
        "libcodec2_soft_mpeg4dec",
        "libcodec2_soft_mpeg4enc",
        "libcodec2_soft_mp3dec",
        "libcodec2_soft_vorbisdec",
        "libcodec2_soft_opusdec",
        "libcodec2_soft_vp8dec",
        "libcodec2_soft_vp9dec",
        "libcodec2_soft_vp8enc",
        "libcodec2_soft_vp9enc",
        "libcodec2_soft_rawdec",
        "libcodec2_soft_flacdec",
        "libcodec2_soft_flacenc",
        "libcodec2_soft_gsmdec",
        "libcodec2_soft_xaacdec",
    ],

    compile_multilib: "32",
}
+7 −1
Original line number Diff line number Diff line
@@ -26,6 +26,12 @@
/* static */ android::Mutex C2PlatformStorePluginLoader::sMutex;
/* static */ std::unique_ptr<C2PlatformStorePluginLoader> C2PlatformStorePluginLoader::sInstance;

namespace /* unnamed */ {

constexpr const char kStorePluginPath[] = "libc2plugin_store.so";

}  // unnamed

C2PlatformStorePluginLoader::C2PlatformStorePluginLoader(const char *libPath)
    : mCreateBlockPool(nullptr) {
    mLibHandle = dlopen(libPath, RTLD_NOW | RTLD_NODELETE);
@@ -89,7 +95,7 @@ const std::unique_ptr<C2PlatformStorePluginLoader>& C2PlatformStorePluginLoader:
    android::Mutex::Autolock _l(sMutex);
    if (!sInstance) {
        ALOGV("Loading library");
        sInstance.reset(new C2PlatformStorePluginLoader("libstagefright_ccodec_ext.so"));
        sInstance.reset(new C2PlatformStorePluginLoader(kStorePluginPath));
    }
    return sInstance;
}
+56 −56
Original line number Diff line number Diff line
@@ -798,65 +798,65 @@ C2PlatformComponentStore::C2PlatformComponentStore()
        mComponentsList.emplace_back(alias);
    };
    // TODO: move this also into a .so so it can be updated
    emplace("c2.android.avc.decoder", "libstagefright_soft_c2avcdec.so");
    emplace("c2.android.avc.encoder", "libstagefright_soft_c2avcenc.so");
    emplace("c2.android.aac.decoder", "libstagefright_soft_c2aacdec.so");
    emplace("c2.android.aac.encoder", "libstagefright_soft_c2aacenc.so");
    emplace("c2.android.amrnb.decoder", "libstagefright_soft_c2amrnbdec.so");
    emplace("c2.android.amrnb.encoder", "libstagefright_soft_c2amrnbenc.so");
    emplace("c2.android.amrwb.decoder", "libstagefright_soft_c2amrwbdec.so");
    emplace("c2.android.amrwb.encoder", "libstagefright_soft_c2amrwbenc.so");
    emplace("c2.android.hevc.decoder", "libstagefright_soft_c2hevcdec.so");
    emplace("c2.android.g711.alaw.decoder", "libstagefright_soft_c2g711alawdec.so");
    emplace("c2.android.g711.mlaw.decoder", "libstagefright_soft_c2g711mlawdec.so");
    emplace("c2.android.mpeg2.decoder", "libstagefright_soft_c2mpeg2dec.so");
    emplace("c2.android.h263.decoder", "libstagefright_soft_c2h263dec.so");
    emplace("c2.android.h263.encoder", "libstagefright_soft_c2h263enc.so");
    emplace("c2.android.mpeg4.decoder", "libstagefright_soft_c2mpeg4dec.so");
    emplace("c2.android.mpeg4.encoder", "libstagefright_soft_c2mpeg4enc.so");
    emplace("c2.android.mp3.decoder", "libstagefright_soft_c2mp3dec.so");
    emplace("c2.android.vorbis.decoder", "libstagefright_soft_c2vorbisdec.so");
    emplace("c2.android.opus.decoder", "libstagefright_soft_c2opusdec.so");
    emplace("c2.android.vp8.decoder", "libstagefright_soft_c2vp8dec.so");
    emplace("c2.android.vp9.decoder", "libstagefright_soft_c2vp9dec.so");
    emplace("c2.android.vp8.encoder", "libstagefright_soft_c2vp8enc.so");
    emplace("c2.android.vp9.encoder", "libstagefright_soft_c2vp9enc.so");
    emplace("c2.android.raw.decoder", "libstagefright_soft_c2rawdec.so");
    emplace("c2.android.flac.decoder", "libstagefright_soft_c2flacdec.so");
    emplace("c2.android.flac.encoder", "libstagefright_soft_c2flacenc.so");
    emplace("c2.android.gsm.decoder", "libstagefright_soft_c2gsmdec.so");
    emplace("c2.android.xaac.decoder", "libstagefright_soft_c2xaacdec.so");
    emplace("c2.android.avc.decoder", "libcodec2_soft_avcdec.so");
    emplace("c2.android.avc.encoder", "libcodec2_soft_avcenc.so");
    emplace("c2.android.aac.decoder", "libcodec2_soft_aacdec.so");
    emplace("c2.android.aac.encoder", "libcodec2_soft_aacenc.so");
    emplace("c2.android.amrnb.decoder", "libcodec2_soft_amrnbdec.so");
    emplace("c2.android.amrnb.encoder", "libcodec2_soft_amrnbenc.so");
    emplace("c2.android.amrwb.decoder", "libcodec2_soft_amrwbdec.so");
    emplace("c2.android.amrwb.encoder", "libcodec2_soft_amrwbenc.so");
    emplace("c2.android.hevc.decoder", "libcodec2_soft_hevcdec.so");
    emplace("c2.android.g711.alaw.decoder", "libcodec2_soft_g711alawdec.so");
    emplace("c2.android.g711.mlaw.decoder", "libcodec2_soft_g711mlawdec.so");
    emplace("c2.android.mpeg2.decoder", "libcodec2_soft_mpeg2dec.so");
    emplace("c2.android.h263.decoder", "libcodec2_soft_h263dec.so");
    emplace("c2.android.h263.encoder", "libcodec2_soft_h263enc.so");
    emplace("c2.android.mpeg4.decoder", "libcodec2_soft_mpeg4dec.so");
    emplace("c2.android.mpeg4.encoder", "libcodec2_soft_mpeg4enc.so");
    emplace("c2.android.mp3.decoder", "libcodec2_soft_mp3dec.so");
    emplace("c2.android.vorbis.decoder", "libcodec2_soft_vorbisdec.so");
    emplace("c2.android.opus.decoder", "libcodec2_soft_opusdec.so");
    emplace("c2.android.vp8.decoder", "libcodec2_soft_vp8dec.so");
    emplace("c2.android.vp9.decoder", "libcodec2_soft_vp9dec.so");
    emplace("c2.android.vp8.encoder", "libcodec2_soft_vp8enc.so");
    emplace("c2.android.vp9.encoder", "libcodec2_soft_vp9enc.so");
    emplace("c2.android.raw.decoder", "libcodec2_soft_rawdec.so");
    emplace("c2.android.flac.decoder", "libcodec2_soft_flacdec.so");
    emplace("c2.android.flac.encoder", "libcodec2_soft_flacenc.so");
    emplace("c2.android.gsm.decoder", "libcodec2_soft_gsmdec.so");
    emplace("c2.android.xaac.decoder", "libcodec2_soft_xaacdec.so");

    // "Aliases"
    // TODO: use aliases proper from C2Component::Traits
    emplace("OMX.google.h264.decoder", "libstagefright_soft_c2avcdec.so");
    emplace("OMX.google.h264.encoder", "libstagefright_soft_c2avcenc.so");
    emplace("OMX.google.aac.decoder", "libstagefright_soft_c2aacdec.so");
    emplace("OMX.google.aac.encoder", "libstagefright_soft_c2aacenc.so");
    emplace("OMX.google.amrnb.decoder", "libstagefright_soft_c2amrnbdec.so");
    emplace("OMX.google.amrnb.encoder", "libstagefright_soft_c2amrnbenc.so");
    emplace("OMX.google.amrwb.decoder", "libstagefright_soft_c2amrwbdec.so");
    emplace("OMX.google.amrwb.encoder", "libstagefright_soft_c2amrwbenc.so");
    emplace("OMX.google.hevc.decoder", "libstagefright_soft_c2hevcdec.so");
    emplace("OMX.google.g711.alaw.decoder", "libstagefright_soft_c2g711alawdec.so");
    emplace("OMX.google.g711.mlaw.decoder", "libstagefright_soft_c2g711mlawdec.so");
    emplace("OMX.google.mpeg2.decoder", "libstagefright_soft_c2mpeg2dec.so");
    emplace("OMX.google.h263.decoder", "libstagefright_soft_c2h263dec.so");
    emplace("OMX.google.h263.encoder", "libstagefright_soft_c2h263enc.so");
    emplace("OMX.google.mpeg4.decoder", "libstagefright_soft_c2mpeg4dec.so");
    emplace("OMX.google.mpeg4.encoder", "libstagefright_soft_c2mpeg4enc.so");
    emplace("OMX.google.mp3.decoder", "libstagefright_soft_c2mp3dec.so");
    emplace("OMX.google.vorbis.decoder", "libstagefright_soft_c2vorbisdec.so");
    emplace("OMX.google.opus.decoder", "libstagefright_soft_c2opusdec.so");
    emplace("OMX.google.vp8.decoder", "libstagefright_soft_c2vp8dec.so");
    emplace("OMX.google.vp9.decoder", "libstagefright_soft_c2vp9dec.so");
    emplace("OMX.google.vp8.encoder", "libstagefright_soft_c2vp8enc.so");
    emplace("OMX.google.vp9.encoder", "libstagefright_soft_c2vp9enc.so");
    emplace("OMX.google.raw.decoder", "libstagefright_soft_c2rawdec.so");
    emplace("OMX.google.flac.decoder", "libstagefright_soft_c2flacdec.so");
    emplace("OMX.google.flac.encoder", "libstagefright_soft_c2flacenc.so");
    emplace("OMX.google.gsm.decoder", "libstagefright_soft_c2gsmdec.so");
    emplace("OMX.google.xaac.decoder", "libstagefright_soft_c2xaacdec.so");
    emplace("OMX.google.h264.decoder", "libcodec2_soft_avcdec.so");
    emplace("OMX.google.h264.encoder", "libcodec2_soft_avcenc.so");
    emplace("OMX.google.aac.decoder", "libcodec2_soft_aacdec.so");
    emplace("OMX.google.aac.encoder", "libcodec2_soft_aacenc.so");
    emplace("OMX.google.amrnb.decoder", "libcodec2_soft_amrnbdec.so");
    emplace("OMX.google.amrnb.encoder", "libcodec2_soft_amrnbenc.so");
    emplace("OMX.google.amrwb.decoder", "libcodec2_soft_amrwbdec.so");
    emplace("OMX.google.amrwb.encoder", "libcodec2_soft_amrwbenc.so");
    emplace("OMX.google.hevc.decoder", "libcodec2_soft_hevcdec.so");
    emplace("OMX.google.g711.alaw.decoder", "libcodec2_soft_g711alawdec.so");
    emplace("OMX.google.g711.mlaw.decoder", "libcodec2_soft_g711mlawdec.so");
    emplace("OMX.google.mpeg2.decoder", "libcodec2_soft_mpeg2dec.so");
    emplace("OMX.google.h263.decoder", "libcodec2_soft_h263dec.so");
    emplace("OMX.google.h263.encoder", "libcodec2_soft_h263enc.so");
    emplace("OMX.google.mpeg4.decoder", "libcodec2_soft_mpeg4dec.so");
    emplace("OMX.google.mpeg4.encoder", "libcodec2_soft_mpeg4enc.so");
    emplace("OMX.google.mp3.decoder", "libcodec2_soft_mp3dec.so");
    emplace("OMX.google.vorbis.decoder", "libcodec2_soft_vorbisdec.so");
    emplace("OMX.google.opus.decoder", "libcodec2_soft_opusdec.so");
    emplace("OMX.google.vp8.decoder", "libcodec2_soft_vp8dec.so");
    emplace("OMX.google.vp9.decoder", "libcodec2_soft_vp9dec.so");
    emplace("OMX.google.vp8.encoder", "libcodec2_soft_vp8enc.so");
    emplace("OMX.google.vp9.encoder", "libcodec2_soft_vp9enc.so");
    emplace("OMX.google.raw.decoder", "libcodec2_soft_rawdec.so");
    emplace("OMX.google.flac.decoder", "libcodec2_soft_flacdec.so");
    emplace("OMX.google.flac.encoder", "libcodec2_soft_flacenc.so");
    emplace("OMX.google.gsm.decoder", "libcodec2_soft_gsmdec.so");
    emplace("OMX.google.xaac.decoder", "libcodec2_soft_xaacdec.so");
}

c2_status_t C2PlatformComponentStore::copyBuffer(
+1 −6
Original line number Diff line number Diff line
@@ -137,6 +137,7 @@ cc_library_shared {

    shared_libs: [
        "libaudioutils",
        "libbase",
        "libbinder",
        "libcamera_client",
        "libcutils",
@@ -197,12 +198,6 @@ cc_library_shared {
        "include",
    ],

    // This is needed to make sure libcodec2 exists in all devices.
    // TODO: Remove this once the public CCodec is enabled.
    required: [
        "libcodec2",
    ],

    cflags: [
        "-Wno-multichar",
        "-Werror",
Loading