/*
 * Copyright (C) 2021 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.
 */


// these headers include the structure of needed function pointers
package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_av_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_av_license"],
}

cc_library_headers {
    name: "libmediaformatshaper_headers",
    export_include_dirs: ["include"],
    apex_available: [
        "//apex_available:platform",
        "com.android.media",
    ],
    min_sdk_version: "29",
    host_supported: true,
    target: {
        darwin: {
            enabled: false,
        },
    },
}

cc_defaults {
    name: "libmediaformatshaper_defaults",
    srcs: [
        "CodecProperties.cpp",
        "CodecSeeding.cpp",
        "FormatShaper.cpp",
        "ManageShapingCodecs.cpp",
        "VideoShaper.cpp",
        "VQApply.cpp",
    ],

    local_include_dirs: [
        "include",
    ],

    header_libs: [
        "libstagefright_headers",
    ],

    shared_libs: [
        "liblog",
        "libutils",
    ],

    cflags: [
        "-Werror",
        "-Wall",
        "-fvisibility=hidden",
        "-Wthread-safety",                      // enables GUARDED_BY()
    ],

    target: {
        android: {
            shared_libs: [
                "libmediandk#29",
            ],
        },
    },

    sanitize: {
        cfi: true,
        misc_undefined: [
            "unsigned-integer-overflow",
            "signed-integer-overflow",
        ],
    },
}

cc_library {
    name: "libmediaformatshaper",
    defaults: ["libmediaformatshaper_defaults"],

    min_sdk_version: "29",

    // the library lives only in the module
    // framework accesses with dlopen() and uses "libmediaformatshaper_headers" so both
    // sides track to the interface.
    apex_available: ["com.android.media"],

    version_script: "exports.lds",

}
