package { default_applicable_licenses: ["system_cros-codecs_license"], // TODO(b/374841646): This is a temporary assignment. default_team: "trendy_team_arc_next", } license { name: "system_cros-codecs_license", visibility: [":__subpackages__"], license_kinds: ["SPDX-license-identifier-BSD-3-Clause"], license_text: ["LICENSE"], } soong_config_bool_variable { name: "intel_protected_content", } soong_config_module_type { name: "rust_defaults_cros_codecs_protected_content", module_type: "rust_defaults", config_namespace: "cros_codecs_config", bool_variables: [ "intel_protected_content", ], properties: [ "features", "header_libs", "cflags", ], } rust_defaults_cros_codecs_protected_content { name: "cros_codecs_protected_content_defaults", soong_config_variables: { intel_protected_content: { features: ["intel-protected-content"], }, }, } rust_defaults { name: "libcros_codecs_defaults", crate_name: "cros_codecs", cargo_env_compat: true, cargo_pkg_version: "0.0.5", crate_root: "src/lib.rs", edition: "2021", rustlibs: [ "libanyhow", "libcrc32fast", "libbyteorder", "libthiserror", "liblog_rust", "libgbm_rust", "libdrm_rust", "libdrm_fourcc", "libgbm_sys", "libnix", "libzerocopy", "librand", "libstatic_assertions", "libvulkano", "libenv_logger", ], aliases: ["cros_libva:libva"], apex_available: [ "//apex_available:platform", "//apex_available:anyapex", ], // TODO(b/382119688): Remove this. lints: "none", product_available: true, vendor_available: true, } rust_library { name: "libcros_codecs", defaults: [ "libcros_codecs_defaults", "cros_codecs_protected_content_defaults", ], enabled: false, arch: { x86_64: { enabled: true, features: [ "vaapi", "backend", "ubc", ], rustlibs: ["libcros_libva"], }, arm64: { enabled: true, features: [ "v4l2", "backend", ], rustlibs: ["libv4l2r"], }, }, } rust_library { name: "libcros_codecs_test_common", srcs: ["tests/lib.rs"], rustlibs: [ "libchrono", "liblazy_static", "liblog_rust", "libregex", "libthiserror", ], crate_name: "cros_codecs_test_common", } rust_test_host { name: "libcros_codecs_test", defaults: ["libcros_codecs_defaults"], } // cros-codecs device tests. // TODO(b/438731084): Enable other features for tests once available. rust_test { name: "libcros_codecs_device_test", defaults: ["libcros_codecs_defaults"], enabled: false, features: [ "android", "backend", ], arch: { x86_64: { enabled: true, features: [ "vulkan", "vaapi", ], rustlibs: ["libcros_libva"], }, arm64: { enabled: true, features: [ "vulkan", "v4l2", ], rustlibs: ["libv4l2r"], }, }, } rust_defaults { name: "libcros_codecs_tests_defaults", rustlibs: [ "libandroid_logger", "libargh", "libcros_codecs", "libdrm_fourcc", "libenv_logger", "liblog_rust", ], enabled: false, arch: { x86_64: { enabled: true, features: [ "android", "vaapi", "backend", ], }, arm64: { enabled: true, features: [ "android", "v4l2", "backend", ], }, }, } // Base case cros-codecs decoding tests. rust_test { name: "ccdec_test", srcs: ["tests/ccdec_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccdec_test.xml", data: [":ccdec_test_data"], data_bins: ["ccdec"], } rust_test { name: "image_processor_test", srcs: ["tests/image_processor_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", ], test_config: "tests/configs/image_processor_test.xml", } rust_binary { name: "ccdec", srcs: ["examples/ccdec/main.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libserde_json"], // Install target to /vendor/bin (via `adb sync`). Needed for runtime linking // only if any of shared dependencies (e.g., libcros_libva) are also vendor-installed vendor: true, prefer_rlib: true, } // Base case cros-codecs encoding tests. rust_test { name: "ccenc_test", srcs: ["tests/ccenc_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccenc_test.xml", data: [ ":ccenc_test_data", ], data_bins: ["ccenc"], } rust_binary { name: "ccenc", srcs: ["examples/ccenc/main.rs"], defaults: ["libcros_codecs_tests_defaults"], // Install target to /vendor/bin (via `adb sync`). Needed for runtime linking // only if any of shared dependencies (e.g., libcros_libva) are also vendor-installed vendor: true, prefer_rlib: true, } // TODO(b/416047856): Configure test execution according to Hardware and Software Dep. rust_test { name: "ccdec_vp8_test", srcs: ["tests/ccdec/ccdec_vp8_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccdec_vp8_test.xml", data_bins: ["ccdec"], } rust_test { name: "ccdec_vp9_test", srcs: ["tests/ccdec/ccdec_vp9_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccdec_vp9_test.xml", data_bins: ["ccdec"], } rust_test { name: "ccdec_h264_test", srcs: ["tests/ccdec/ccdec_h264_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccdec_h264_test.xml", data_bins: ["ccdec"], } rust_test { name: "ccdec_h265_test", srcs: ["tests/ccdec/ccdec_h265_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccdec_h265_test.xml", data_bins: ["ccdec"], } rust_test { name: "ccdec_av1_test", srcs: ["tests/ccdec/ccdec_av1_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccdec_av1_test.xml", data_bins: ["ccdec"], } rust_test { name: "ccenc_vp9_test", srcs: ["tests/ccenc/ccenc_vp9_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccenc_vp9_test.xml", data_bins: ["ccenc"], } rust_test { name: "ccenc_h264_test", srcs: ["tests/ccenc/ccenc_h264_test.rs"], defaults: ["libcros_codecs_tests_defaults"], rustlibs: ["libcros_codecs_test_common"], test_suites: [ "general-tests", "dts", ], test_config: "tests/configs/ccenc_h264_test.xml", data_bins: ["ccenc"], } filegroup { name: "ccdec_test_data", srcs: [ "src/codec/av1/test_data/test-25fps.av1.ivf", "src/codec/av1/test_data/test-25fps.av1.ivf.json", "src/codec/h264/test_data/test-25fps.h264", "src/codec/h264/test_data/test-25fps.h264.json", "src/codec/h265/test_data/test-25fps.h265", "src/codec/h265/test_data/test-25fps.h265.json", "src/codec/vp8/test_data/test-25fps.vp8", "src/codec/vp8/test_data/test-25fps.vp8.json", "src/codec/vp9/test_data/test-25fps.vp9", "src/codec/vp9/test_data/test-25fps.vp9.json", ], } filegroup { name: "ccenc_test_data", srcs: [ // The original video is processed with ffmpeg to losslessly reduce the // number of frames from 850 to 30 frames. "tests/ccenc/test_data/desktop2-320x180_30frames.vp9.webm", ], }