blob: 5791758eb89c6426baca25ffa86c27725e2c9509 [file] [log] [blame]
# Example commandline interface tools for the IAMF software.
load("@rules_cc//cc:cc_library.bzl", "cc_library")
package(default_visibility = [
# TODO(b/400697000): Break up visibility for the api directory.
"//iamf/api:__subpackages__",
"//iamf/cli:__subpackages__",
])
exports_files(
srcs = [
"encoder_main.cc",
"encoder_main_lib.cc",
"encoder_main_lib.h",
"iamf_components.h",
],
)
# keep-sorted start block=yes prefix_order=cc_library,cc_binary newline_separated=yes
cc_library(
name = "audio_element_with_data",
hdrs = ["audio_element_with_data.h"],
deps = [
":channel_label",
"//iamf/obu:audio_element",
"//iamf/obu:codec_config",
"//iamf/obu:param_definitions",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
],
)
cc_library(
name = "audio_frame_decoder",
srcs = ["audio_frame_decoder.cc"],
hdrs = ["audio_frame_decoder.h"],
deps = [
":audio_element_with_data",
":audio_frame_with_data",
"//iamf/cli/codec:aac_decoder",
"//iamf/cli/codec:decoder_base",
"//iamf/cli/codec:flac_decoder",
"//iamf/cli/codec:lpcm_decoder",
"//iamf/cli/codec:opus_decoder",
"//iamf/common/utils:macros",
"//iamf/obu:codec_config",
"//iamf/obu:parameter_data",
"//iamf/obu:types",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "audio_frame_with_data",
hdrs = ["audio_frame_with_data.h"],
deps = [
":audio_element_with_data",
"//iamf/obu:audio_frame",
"//iamf/obu:parameter_data",
"//iamf/obu:types",
],
)
cc_library(
name = "channel_label",
srcs = ["channel_label.cc"],
hdrs = ["channel_label.h"],
deps = [
"//iamf/common/utils:macros",
"//iamf/common/utils:map_utils",
"//iamf/common/utils:validation_utils",
"//iamf/obu:audio_element",
"//iamf/obu:parameter_data",
"@com_google_absl//absl/base:no_destructor",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
],
)
cc_library(
name = "cli_util",
srcs = ["cli_util.cc"],
hdrs = ["cli_util.h"],
deps = [
":audio_element_with_data",
"//iamf/common/utils:macros",
"//iamf/common/utils:sample_processing_utils",
"//iamf/obu:audio_element",
"//iamf/obu:codec_config",
"//iamf/obu:mix_presentation",
"//iamf/obu:param_definitions",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
],
)
cc_library(
name = "demixing_module",
srcs = ["demixing_module.cc"],
hdrs = ["demixing_module.h"],
deps = [
":audio_element_with_data",
":audio_frame_decoder",
":audio_frame_with_data",
":channel_label",
":cli_util",
"//iamf/common/utils:macros",
"//iamf/common/utils:numeric_utils",
"//iamf/obu:audio_element",
"//iamf/obu:audio_frame",
"//iamf/obu:parameter_data",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "encoder_main_lib",
srcs = ["encoder_main_lib.cc"],
hdrs = ["encoder_main_lib.h"],
deps = [
":audio_element_with_data",
":audio_frame_with_data",
":demixing_module",
":iamf_components",
":iamf_encoder",
":obu_sequencer_base",
":parameter_block_partitioner",
":parameter_block_with_data",
":wav_sample_provider",
":wav_writer",
"//iamf/cli/proto:temporal_delimiter_cc_proto",
"//iamf/cli/proto:test_vector_metadata_cc_proto",
"//iamf/cli/proto:user_metadata_cc_proto",
"//iamf/common/utils:macros",
"//iamf/obu:arbitrary_obu",
"//iamf/obu:codec_config",
"//iamf/obu:ia_sequence_header",
"//iamf/obu:mix_presentation",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_protobuf//:protobuf",
],
)
cc_library(
name = "global_timing_module",
srcs = ["global_timing_module.cc"],
hdrs = ["global_timing_module.h"],
deps = [
":audio_element_with_data",
":cli_util",
"//iamf/common/utils:macros",
"//iamf/common/utils:validation_utils",
"//iamf/obu:audio_element",
"//iamf/obu:codec_config",
"//iamf/obu:param_definitions",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "iamf_components",
srcs = ["iamf_components.cc"],
hdrs = ["iamf_components.h"],
deps = [
":loudness_calculator_factory_base",
":obu_sequencer_base",
":obu_sequencer_iamf",
":renderer_factory",
"//iamf/cli/proto:mix_presentation_cc_proto",
"//iamf/cli/proto:test_vector_metadata_cc_proto",
"//iamf/cli/proto:user_metadata_cc_proto",
"//iamf/cli/proto_conversion:proto_utils",
"@com_google_absl//absl/log",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "iamf_encoder",
srcs = ["iamf_encoder.cc"],
hdrs = ["iamf_encoder.h"],
deps = [
":audio_element_with_data",
":audio_frame_decoder",
":audio_frame_with_data",
":channel_label",
":cli_util",
":demixing_module",
":global_timing_module",
":loudness_calculator_factory_base",
":parameter_block_with_data",
":parameters_manager",
":renderer_factory",
":rendering_mix_presentation_finalizer",
"//iamf/cli/proto:encoder_control_metadata_cc_proto",
"//iamf/cli/proto:test_vector_metadata_cc_proto",
"//iamf/cli/proto:user_metadata_cc_proto",
"//iamf/cli/proto_conversion:downmixing_reconstruction_util",
"//iamf/cli/proto_conversion/proto_to_obu:arbitrary_obu_generator",
"//iamf/cli/proto_conversion/proto_to_obu:audio_element_generator",
"//iamf/cli/proto_conversion/proto_to_obu:audio_frame_generator",
"//iamf/cli/proto_conversion/proto_to_obu:codec_config_generator",
"//iamf/cli/proto_conversion/proto_to_obu:ia_sequence_header_generator",
"//iamf/cli/proto_conversion/proto_to_obu:mix_presentation_generator",
"//iamf/cli/proto_conversion/proto_to_obu:parameter_block_generator",
"//iamf/common/utils:macros",
"//iamf/obu:arbitrary_obu",
"//iamf/obu:codec_config",
"//iamf/obu:ia_sequence_header",
"//iamf/obu:mix_presentation",
"//iamf/obu:param_definitions",
"//iamf/obu:types",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "loudness_calculator_base",
srcs = ["loudness_calculator_base.cc"],
hdrs = ["loudness_calculator_base.h"],
deps = [
"//iamf/obu:mix_presentation",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "loudness_calculator_factory_base",
srcs = ["loudness_calculator_factory_base.cc"],
hdrs = ["loudness_calculator_factory_base.h"],
deps = [
":loudness_calculator_base",
"//iamf/obu:mix_presentation",
],
)
cc_library(
name = "obu_processor",
srcs = ["obu_processor.cc"],
hdrs = ["obu_processor.h"],
deps = [
":audio_element_with_data",
":audio_frame_decoder",
":audio_frame_with_data",
":cli_util",
":demixing_module",
":global_timing_module",
":obu_with_data_generator",
":parameter_block_with_data",
":parameters_manager",
":profile_filter",
":renderer_factory",
":rendering_mix_presentation_finalizer",
":sample_processor_base",
"//iamf/common:read_bit_buffer",
"//iamf/common/utils:macros",
"//iamf/common/utils:validation_utils",
"//iamf/obu:audio_element",
"//iamf/obu:audio_frame",
"//iamf/obu:codec_config",
"//iamf/obu:ia_sequence_header",
"//iamf/obu:mix_presentation",
"//iamf/obu:obu_header",
"//iamf/obu:param_definitions",
"//iamf/obu:parameter_block",
"//iamf/obu:temporal_delimiter",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "obu_sequencer_base",
srcs = ["obu_sequencer_base.cc"],
hdrs = ["obu_sequencer_base.h"],
deps = [
":audio_element_with_data",
":audio_frame_with_data",
":cli_util",
":parameter_block_with_data",
":profile_filter",
":temporal_unit_view",
"//iamf/common:leb_generator",
"//iamf/common:write_bit_buffer",
"//iamf/common/utils:macros",
"//iamf/obu:arbitrary_obu",
"//iamf/obu:audio_element",
"//iamf/obu:audio_frame",
"//iamf/obu:codec_config",
"//iamf/obu:ia_sequence_header",
"//iamf/obu:mix_presentation",
"//iamf/obu:obu_header",
"//iamf/obu:parameter_block",
"//iamf/obu:temporal_delimiter",
"//iamf/obu:types",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "obu_sequencer_iamf",
srcs = ["obu_sequencer_iamf.cc"],
hdrs = ["obu_sequencer_iamf.h"],
deps = [
":obu_sequencer_base",
"//iamf/common:leb_generator",
"//iamf/common:write_bit_buffer",
"//iamf/common/utils:macros",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "obu_with_data_generator",
srcs = ["obu_with_data_generator.cc"],
hdrs = ["obu_with_data_generator.h"],
deps = [
":audio_element_with_data",
":audio_frame_with_data",
":channel_label",
":cli_util",
":global_timing_module",
":parameter_block_with_data",
":parameters_manager",
"//iamf/common/utils:macros",
"//iamf/common/utils:numeric_utils",
"//iamf/common/utils:validation_utils",
"//iamf/obu:audio_element",
"//iamf/obu:audio_frame",
"//iamf/obu:codec_config",
"//iamf/obu:param_definitions",
"//iamf/obu:parameter_block",
"//iamf/obu:parameter_data",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "parameter_block_partitioner",
srcs = ["parameter_block_partitioner.cc"],
hdrs = ["parameter_block_partitioner.h"],
deps = [
":cli_util",
"//iamf/cli/proto:codec_config_cc_proto",
"//iamf/cli/proto:ia_sequence_header_cc_proto",
"//iamf/cli/proto:obu_header_cc_proto",
"//iamf/cli/proto:parameter_block_cc_proto",
"//iamf/cli/proto:parameter_data_cc_proto",
"//iamf/common/utils:macros",
"//iamf/common/utils:numeric_utils",
"//iamf/common/utils:obu_util",
"//iamf/obu:types",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "parameter_block_with_data",
hdrs = ["parameter_block_with_data.h"],
deps = [
"//iamf/obu:parameter_block",
"//iamf/obu:types",
],
)
cc_library(
name = "parameters_manager",
srcs = ["parameters_manager.cc"],
hdrs = ["parameters_manager.h"],
deps = [
":audio_element_with_data",
":cli_util",
":parameter_block_with_data",
"//iamf/common/utils:macros",
"//iamf/obu:param_definitions",
"//iamf/obu:parameter_block",
"//iamf/obu:parameter_data",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "profile_filter",
srcs = ["profile_filter.cc"],
hdrs = ["profile_filter.h"],
deps = [
":audio_element_with_data",
"//iamf/common/utils:macros",
"//iamf/common/utils:validation_utils",
"//iamf/obu:audio_element",
"//iamf/obu:ia_sequence_header",
"//iamf/obu:mix_presentation",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
],
)
cc_library(
name = "recon_gain_generator",
srcs = ["recon_gain_generator.cc"],
hdrs = ["recon_gain_generator.h"],
deps = [
":channel_label",
":demixing_module",
"//iamf/common/utils:macros",
"//iamf/common/utils:map_utils",
"//iamf/obu:types",
"@com_google_absl//absl/base:no_destructor",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
],
)
cc_library(
name = "renderer_factory",
srcs = ["renderer_factory.cc"],
hdrs = ["renderer_factory.h"],
deps = [
":audio_element_with_data",
"//iamf/cli/renderer:audio_element_renderer_ambisonics_to_channel",
"//iamf/cli/renderer:audio_element_renderer_base",
"//iamf/cli/renderer:audio_element_renderer_channel_to_channel",
"//iamf/cli/renderer:audio_element_renderer_passthrough",
"//iamf/obu:audio_element",
"//iamf/obu:mix_presentation",
"//iamf/obu:types",
"@com_google_absl//absl/log",
],
)
cc_library(
name = "rendering_mix_presentation_finalizer",
srcs = ["rendering_mix_presentation_finalizer.cc"],
hdrs = ["rendering_mix_presentation_finalizer.h"],
deps = [
":audio_element_with_data",
":cli_util",
":demixing_module",
":loudness_calculator_base",
":loudness_calculator_factory_base",
":parameter_block_with_data",
":renderer_factory",
":sample_processor_base",
"//iamf/cli/renderer:audio_element_renderer_base",
"//iamf/common/utils:macros",
"//iamf/common/utils:numeric_utils",
"//iamf/common/utils:sample_processing_utils",
"//iamf/common/utils:validation_utils",
"//iamf/obu:audio_element",
"//iamf/obu:codec_config",
"//iamf/obu:mix_presentation",
"//iamf/obu:param_definitions",
"//iamf/obu:parameter_block",
"//iamf/obu:types",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "sample_processor_base",
srcs = ["sample_processor_base.cc"],
hdrs = ["sample_processor_base.h"],
deps = [
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "temporal_unit_view",
srcs = ["temporal_unit_view.cc"],
hdrs = ["temporal_unit_view.h"],
deps = [
":audio_frame_with_data",
":parameter_block_with_data",
"//iamf/common/utils:macros",
"//iamf/common/utils:validation_utils",
"//iamf/obu:arbitrary_obu",
"//iamf/obu:types",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "wav_reader",
srcs = ["wav_reader.cc"],
hdrs = ["wav_reader.h"],
deps = [
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_audio_to_tactile//:dsp",
],
)
cc_library(
name = "wav_sample_provider",
srcs = ["wav_sample_provider.cc"],
hdrs = ["wav_sample_provider.h"],
deps = [
":audio_element_with_data",
":channel_label",
":demixing_module",
":wav_reader",
"//iamf/cli/proto:audio_frame_cc_proto",
"//iamf/cli/proto_conversion:channel_label_utils",
"//iamf/common/utils:macros",
"//iamf/common/utils:numeric_utils",
"//iamf/common/utils:validation_utils",
"//iamf/obu:codec_config",
"//iamf/obu:types",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_protobuf//:protobuf",
],
)
cc_library(
name = "wav_writer",
srcs = ["wav_writer.cc"],
hdrs = ["wav_writer.h"],
deps = [
":sample_processor_base",
"//iamf/common/utils:macros",
"//iamf/common/utils:sample_processing_utils",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
"@com_google_audio_to_tactile//:dsp",
],
)
cc_binary(
name = "encoder_main",
srcs = [
"encoder_main.cc",
],
data = [
"//iamf/cli/testdata:input_wav_files",
],
deps = [
":encoder_main_lib",
"//iamf/cli/adm_to_user_metadata/app:adm_to_user_metadata_main_lib",
"//iamf/cli/proto:test_vector_metadata_cc_proto",
"//iamf/cli/proto:user_metadata_cc_proto",
"//iamf/obu:ia_sequence_header",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/flags:parse",
"@com_google_absl//absl/flags:usage",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:flags",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_protobuf//:protobuf",
],
)
# keep-sorted end