# 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