# Files to create `iamf/obu` classes from proto definitions.

load("@rules_cc//cc:cc_library.bzl", "cc_library")

package(default_visibility = ["//iamf/cli:__subpackages__"])

# keep-sorted start block=yes prefix_order=cc_library newline_separated=yes
cc_library(
    name = "arbitrary_obu_generator",
    srcs = ["arbitrary_obu_generator.cc"],
    hdrs = ["arbitrary_obu_generator.h"],
    deps = [
        "//iamf/cli/proto:arbitrary_obu_cc_proto",
        "//iamf/cli/proto_conversion:lookup_tables",
        "//iamf/cli/proto_conversion:proto_utils",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:map_utils",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:obu_header",
        "@abseil-cpp//absl/base:no_destructor",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/strings",
        "@protobuf",
    ],
)

cc_library(
    name = "audio_element_generator",
    srcs = ["audio_element_generator.cc"],
    hdrs = ["audio_element_generator.h"],
    deps = [
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:obu_with_data_generator",
        "//iamf/cli/proto:audio_element_cc_proto",
        "//iamf/cli/proto:param_definitions_cc_proto",
        "//iamf/cli/proto_conversion:lookup_tables",
        "//iamf/cli/proto_conversion:proto_utils",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:map_utils",
        "//iamf/common/utils:numeric_utils",
        "//iamf/obu:audio_element",
        "//iamf/obu:codec_config",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "//iamf/obu/param_definitions:extended_param_definition",
        "//iamf/obu/param_definitions:param_definition_base",
        "//iamf/obu/param_definitions:recon_gain_param_definition",
        "@abseil-cpp//absl/base:no_destructor",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/strings",
        "@abseil-cpp//absl/types:span",
        "@protobuf",
    ],
)

cc_library(
    name = "audio_frame_generator",
    srcs = ["audio_frame_generator.cc"],
    hdrs = ["audio_frame_generator.h"],
    deps = [
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:global_timing_module",
        "//iamf/cli:parameters_manager",
        "//iamf/cli:substream_frames",
        "//iamf/cli/codec:aac_encoder",
        "//iamf/cli/codec:encoder_base",
        "//iamf/cli/codec:flac_encoder",
        "//iamf/cli/codec:lpcm_encoder",
        "//iamf/cli/codec:opus_encoder",
        "//iamf/cli/proto:audio_frame_cc_proto",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto:test_vector_metadata_cc_proto",
        "//iamf/cli/proto_conversion:channel_label_utils",
        "//iamf/cli/proto_conversion:codec_config_utils",
        "//iamf/common/utils:macros",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:parameter_data",
        "//iamf/obu:substream_channel_count",
        "//iamf/obu:types",
        "@abseil-cpp//absl/algorithm:container",
        "@abseil-cpp//absl/base:core_headers",
        "@abseil-cpp//absl/base:nullability",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/log:absl_check",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/log:absl_vlog_is_on",
        "@abseil-cpp//absl/memory",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/strings",
        "@abseil-cpp//absl/synchronization",
        "@abseil-cpp//absl/types:span",
        "@protobuf",
    ],
)

cc_library(
    name = "codec_config_generator",
    srcs = ["codec_config_generator.cc"],
    hdrs = ["codec_config_generator.h"],
    deps = [
        ":audio_frame_generator",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto_conversion:lookup_tables",
        "//iamf/cli/proto_conversion:proto_utils",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:map_utils",
        "//iamf/common/utils:numeric_utils",
        "//iamf/obu:codec_config",
        "//iamf/obu/decoder_config:aac_decoder_config",
        "//iamf/obu/decoder_config:flac_decoder_config",
        "//iamf/obu/decoder_config:lpcm_decoder_config",
        "//iamf/obu/decoder_config:opus_decoder_config",
        "@abseil-cpp//absl/base:no_destructor",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/strings",
        "@protobuf",
    ],
)

cc_library(
    name = "ia_sequence_header_generator",
    srcs = ["ia_sequence_header_generator.cc"],
    hdrs = ["ia_sequence_header_generator.h"],
    deps = [
        "//iamf/cli/proto:ia_sequence_header_cc_proto",
        "//iamf/cli/proto_conversion:lookup_tables",
        "//iamf/cli/proto_conversion:proto_utils",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:map_utils",
        "//iamf/obu:ia_sequence_header",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
    ],
)

cc_library(
    name = "metadata_obu_generator",
    srcs = ["metadata_obu_generator.cc"],
    hdrs = ["metadata_obu_generator.h"],
    deps = [
        "//iamf/cli/proto:metadata_obu_cc_proto",
        "//iamf/obu:metadata_obu",
        "//iamf/obu:obu_header",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:statusor",
        "@protobuf",
    ],
)

cc_library(
    name = "mix_presentation_generator",
    srcs = ["mix_presentation_generator.cc"],
    hdrs = ["mix_presentation_generator.h"],
    deps = [
        "//iamf/cli/proto:element_gain_offset_config_cc_proto",
        "//iamf/cli/proto:mix_presentation_cc_proto",
        "//iamf/cli/proto:param_definitions_cc_proto",
        "//iamf/cli/proto:parameter_data_cc_proto",
        "//iamf/cli/proto:types_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/cli/proto_conversion:lookup_tables",
        "//iamf/cli/proto_conversion:proto_utils",
        "//iamf/common:q_format_or_floating_point",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:map_utils",
        "//iamf/common/utils:numeric_utils",
        "//iamf/common/utils:validation_utils",
        "//iamf/obu:element_gain_offset_config",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:rendering_config",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:cart16_param_definition",
        "//iamf/obu/param_definitions:cart8_param_definition",
        "//iamf/obu/param_definitions:dual_cart16_param_definition",
        "//iamf/obu/param_definitions:dual_cart8_param_definition",
        "//iamf/obu/param_definitions:dual_polar_param_definition",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "//iamf/obu/param_definitions:polar_param_definition",
        "@abseil-cpp//absl/base:no_destructor",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/strings",
        "@abseil-cpp//absl/types:span",
        "@protobuf",
    ],
)

cc_library(
    name = "parameter_block_generator",
    srcs = ["parameter_block_generator.cc"],
    hdrs = ["parameter_block_generator.h"],
    deps = [
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:cli_util",
        "//iamf/cli:demixing_module",
        "//iamf/cli:global_timing_module",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:recon_gain_generator",
        "//iamf/cli/proto:parameter_block_cc_proto",
        "//iamf/cli/proto:parameter_data_cc_proto",
        "//iamf/cli/proto_conversion:proto_utils",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:numeric_utils",
        "//iamf/common/utils:validation_utils",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "//iamf/obu/param_definitions:param_definition_base",
        "//iamf/obu/param_definitions:param_definition_variant",
        "//iamf/obu/param_definitions:recon_gain_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/log:absl_check",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/strings",
    ],
)

# keep-sorted end
