diff options
Diffstat (limited to 'third_party/libwebrtc/modules/video_coding/BUILD.gn')
-rw-r--r-- | third_party/libwebrtc/modules/video_coding/BUILD.gn | 1312 |
1 files changed, 1312 insertions, 0 deletions
diff --git a/third_party/libwebrtc/modules/video_coding/BUILD.gn b/third_party/libwebrtc/modules/video_coding/BUILD.gn new file mode 100644 index 0000000000..d4919e99e8 --- /dev/null +++ b/third_party/libwebrtc/modules/video_coding/BUILD.gn @@ -0,0 +1,1312 @@ +# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +import("//third_party/libaom/options.gni") +import("../../webrtc.gni") + +rtc_library("encoded_frame") { + visibility = [ "*" ] + sources = [ + "encoded_frame.cc", + "encoded_frame.h", + ] + deps = [ + ":codec_globals_headers", + ":video_codec_interface", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../modules:module_api_public", + "../../modules/rtp_rtcp:rtp_video_header", + "../../rtc_base:checks", + "../../rtc_base/experiments:alr_experiment", + "../../rtc_base/experiments:rtt_mult_experiment", + "../../rtc_base/system:rtc_export", + "../../system_wrappers", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/types:optional", + "//third_party/abseil-cpp/absl/types:variant", + ] +} + +rtc_library("chain_diff_calculator") { + sources = [ + "chain_diff_calculator.cc", + "chain_diff_calculator.h", + ] + + deps = [ + "../../rtc_base:checks", + "../../rtc_base:logging", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/container:inlined_vector", + "//third_party/abseil-cpp/absl/types:optional", + ] +} + +rtc_library("frame_dependencies_calculator") { + sources = [ + "frame_dependencies_calculator.cc", + "frame_dependencies_calculator.h", + ] + + deps = [ + "../../api:array_view", + "../../common_video/generic_frame_descriptor", + "../../rtc_base:checks", + "../../rtc_base:logging", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/algorithm:container", + "//third_party/abseil-cpp/absl/container:inlined_vector", + "//third_party/abseil-cpp/absl/types:optional", + ] +} + +rtc_library("nack_requester") { + sources = [ + "histogram.cc", + "histogram.h", + "nack_requester.cc", + "nack_requester.h", + ] + + deps = [ + "..:module_api", + "../../api:field_trials_view", + "../../api:sequence_checker", + "../../api/task_queue", + "../../api/task_queue:pending_task_safety_flag", + "../../api/units:time_delta", + "../../api/units:timestamp", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base:macromagic", + "../../rtc_base:rtc_numerics", + "../../rtc_base/experiments:field_trial_parser", + "../../rtc_base/task_utils:repeating_task", + "../../system_wrappers", + ] +} + +rtc_library("packet_buffer") { + sources = [ + "packet_buffer.cc", + "packet_buffer.h", + ] + deps = [ + ":codec_globals_headers", + "../../api:array_view", + "../../api:rtp_packet_info", + "../../api/units:timestamp", + "../../api/video:encoded_image", + "../../api/video:video_frame_type", + "../../common_video", + "../../rtc_base:checks", + "../../rtc_base:copy_on_write_buffer", + "../../rtc_base:logging", + "../../rtc_base:macromagic", + "../../rtc_base:mod_ops", + "../../rtc_base:rtc_numerics", + "../rtp_rtcp:rtp_rtcp_format", + "../rtp_rtcp:rtp_video_header", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/base:core_headers", + "//third_party/abseil-cpp/absl/types:variant", + ] +} + +rtc_library("h264_packet_buffer") { + sources = [ + "h264_packet_buffer.cc", + "h264_packet_buffer.h", + ] + deps = [ + ":codec_globals_headers", + ":packet_buffer", + "../../api:array_view", + "../../api:rtp_packet_info", + "../../api/units:timestamp", + "../../api/video:encoded_image", + "../../api/video:video_frame_type", + "../../common_video", + "../../rtc_base:checks", + "../../rtc_base:copy_on_write_buffer", + "../../rtc_base:logging", + "../../rtc_base:rtc_numerics", + "../rtp_rtcp:rtp_rtcp_format", + "../rtp_rtcp:rtp_video_header", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] +} + +rtc_library("frame_helpers") { + sources = [ + "frame_helpers.cc", + "frame_helpers.h", + ] + deps = [ + "../../api/video:encoded_frame", + "../../rtc_base:logging", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] +} + +rtc_library("frame_buffer2") { + sources = [ + "frame_buffer2.cc", + "frame_buffer2.h", + ] + deps = [ + ":frame_helpers", + ":video_codec_interface", + ":video_coding_utility", + "../../api:field_trials_view", + "../../api:sequence_checker", + "../../api/task_queue", + "../../api/units:data_size", + "../../api/units:time_delta", + "../../api/video:encoded_frame", + "../../api/video:encoded_image", + "../../api/video:video_rtp_headers", + "../../rtc_base:checks", + "../../rtc_base:event_tracer", + "../../rtc_base:logging", + "../../rtc_base:macromagic", + "../../rtc_base:rtc_event", + "../../rtc_base:rtc_numerics", + "../../rtc_base/experiments:field_trial_parser", + "../../rtc_base/experiments:rtt_mult_experiment", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/system:no_unique_address", + "../../rtc_base/task_utils:repeating_task", + "../../system_wrappers", + "timing:inter_frame_delay", + "timing:jitter_estimator", + "timing:timing_module", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] +} + +rtc_library("video_coding") { + visibility = [ "*" ] + sources = [ + "decoder_database.cc", + "decoder_database.h", + "fec_controller_default.cc", + "fec_controller_default.h", + "fec_rate_table.h", + "frame_object.cc", + "frame_object.h", + "generic_decoder.cc", + "generic_decoder.h", + "h264_sprop_parameter_sets.cc", + "h264_sprop_parameter_sets.h", + "h264_sps_pps_tracker.cc", + "h264_sps_pps_tracker.h", + "include/video_codec_initializer.h", + "internal_defines.h", + "loss_notification_controller.cc", + "loss_notification_controller.h", + "media_opt_util.cc", + "media_opt_util.h", + "rtp_frame_id_only_ref_finder.cc", + "rtp_frame_id_only_ref_finder.h", + "rtp_frame_reference_finder.cc", + "rtp_frame_reference_finder.h", + "rtp_generic_ref_finder.cc", + "rtp_generic_ref_finder.h", + "rtp_seq_num_only_ref_finder.cc", + "rtp_seq_num_only_ref_finder.h", + "rtp_vp8_ref_finder.cc", + "rtp_vp8_ref_finder.h", + "rtp_vp9_ref_finder.cc", + "rtp_vp9_ref_finder.h", + "video_codec_initializer.cc", + "video_receiver2.cc", + "video_receiver2.h", + ] + if (build_with_mozilla) { + sources += [ + "event_wrapper.cc", + "event_wrapper.h", + ] + } + + deps = [ + ":codec_globals_headers", + ":encoded_frame", + ":frame_helpers", + ":video_codec_interface", + ":video_coding_utility", + ":webrtc_vp8_scalability", + ":webrtc_vp9_helpers", + "..:module_api", + "..:module_api_public", + "..:module_fec_api", + "../../api:array_view", + "../../api:fec_controller_api", + "../../api:field_trials_view", + "../../api:rtp_headers", + "../../api:rtp_packet_info", + "../../api:scoped_refptr", + "../../api:sequence_checker", + "../../api/task_queue", + "../../api/units:data_rate", + "../../api/units:data_size", + "../../api/units:frequency", + "../../api/units:time_delta", + "../../api/units:timestamp", + "../../api/video:builtin_video_bitrate_allocator_factory", + "../../api/video:encoded_frame", + "../../api/video:encoded_image", + "../../api/video:video_adaptation", + "../../api/video:video_adaptation", + "../../api/video:video_bitrate_allocation", + "../../api/video:video_bitrate_allocator", + "../../api/video:video_bitrate_allocator_factory", + "../../api/video:video_frame", + "../../api/video:video_frame_type", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:copy_on_write_buffer", + "../../rtc_base:event_tracer", + "../../rtc_base:logging", + "../../rtc_base:macromagic", + "../../rtc_base:rtc_event", + "../../rtc_base:rtc_numerics", + "../../rtc_base:safe_conversions", + "../../rtc_base:threading", + "../../rtc_base:timeutils", + "../../rtc_base/experiments:alr_experiment", + "../../rtc_base/experiments:field_trial_parser", + "../../rtc_base/experiments:min_video_bitrate_experiment", + "../../rtc_base/experiments:rate_control_settings", + "../../rtc_base/experiments:rtt_mult_experiment", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/system:no_unique_address", + "../../rtc_base/task_utils:repeating_task", + "../../rtc_base/third_party/base64", + "../../rtc_base/time:timestamp_extrapolator", + "../../system_wrappers", + "../../system_wrappers:field_trial", + "../../system_wrappers:metrics", + "../rtp_rtcp", + "../rtp_rtcp:rtp_rtcp_format", + "../rtp_rtcp:rtp_video_header", + "codecs/av1:av1_svc_config", + "svc:scalability_mode_util", + "timing:inter_frame_delay", + "timing:jitter_estimator", + "timing:rtt_filter", + "timing:timing_module", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/algorithm:container", + "//third_party/abseil-cpp/absl/base:core_headers", + "//third_party/abseil-cpp/absl/container:inlined_vector", + "//third_party/abseil-cpp/absl/types:optional", + "//third_party/abseil-cpp/absl/types:variant", + ] +} + +rtc_library("video_codec_interface") { + visibility = [ "*" ] + sources = [ + "include/video_codec_interface.cc", + "include/video_codec_interface.h", + "include/video_coding_defines.h", + "include/video_error_codes.h", + "video_coding_defines.cc", + ] + deps = [ + ":codec_globals_headers", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../common_video/generic_frame_descriptor", + "../../rtc_base/system:rtc_export", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] +} + +rtc_library("video_coding_legacy") { + visibility = [ ":video_coding_unittests" ] + sources = [ + "decoding_state.cc", + "decoding_state.h", + "event_wrapper.cc", + "event_wrapper.h", + "frame_buffer.cc", + "frame_buffer.h", + "include/video_coding.h", + "jitter_buffer.cc", + "jitter_buffer.h", + "jitter_buffer_common.h", + "packet.cc", + "packet.h", + "receiver.cc", + "receiver.h", + "session_info.cc", + "session_info.h", + "video_coding_impl.cc", + "video_coding_impl.h", + "video_receiver.cc", + ] + deps = [ + ":codec_globals_headers", + ":encoded_frame", + ":video_codec_interface", + ":video_coding", + "..:module_api", + "..:module_api_public", + "../../api:field_trials_view", + "../../api:rtp_headers", + "../../api:rtp_packet_info", + "../../api:sequence_checker", + "../../api/transport:field_trial_based_config", + "../../api/units:timestamp", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_frame_type", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../modules/rtp_rtcp:rtp_video_header", + "../../rtc_base:checks", + "../../rtc_base:event_tracer", + "../../rtc_base:location", + "../../rtc_base:logging", + "../../rtc_base:macromagic", + "../../rtc_base:one_time_event", + "../../rtc_base:rtc_event", + "../../rtc_base:safe_conversions", + "../../rtc_base/memory:always_valid_pointer", + "../../rtc_base/synchronization:mutex", + "../../system_wrappers", + "../rtp_rtcp:rtp_rtcp_format", + "../rtp_rtcp:rtp_video_header", + "timing:inter_frame_delay", + "timing:jitter_estimator", + "timing:timing_module", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/memory", + "//third_party/abseil-cpp/absl/types:optional", + "//third_party/abseil-cpp/absl/types:variant", + ] +} + +rtc_source_set("codec_globals_headers") { + visibility = [ "*" ] + sources = [ + "codecs/h264/include/h264_globals.h", + "codecs/interface/common_constants.h", + "codecs/vp8/include/vp8_globals.h", + "codecs/vp9/include/vp9_globals.h", + ] + + deps = [ "../../rtc_base:checks" ] +} + +rtc_library("video_coding_utility") { + visibility = [ "*" ] + sources = [ + "utility/bandwidth_quality_scaler.cc", + "utility/bandwidth_quality_scaler.h", + "utility/decoded_frames_history.cc", + "utility/decoded_frames_history.h", + "utility/frame_dropper.cc", + "utility/frame_dropper.h", + "utility/framerate_controller_deprecated.cc", + "utility/framerate_controller_deprecated.h", + "utility/ivf_defines.h", + "utility/ivf_file_reader.cc", + "utility/ivf_file_reader.h", + "utility/ivf_file_writer.cc", + "utility/ivf_file_writer.h", + "utility/qp_parser.cc", + "utility/qp_parser.h", + "utility/quality_scaler.cc", + "utility/quality_scaler.h", + "utility/simulcast_rate_allocator.cc", + "utility/simulcast_rate_allocator.h", + "utility/simulcast_utility.cc", + "utility/simulcast_utility.h", + "utility/vp8_header_parser.cc", + "utility/vp8_header_parser.h", + "utility/vp9_constants.h", + "utility/vp9_uncompressed_header_parser.cc", + "utility/vp9_uncompressed_header_parser.h", + ] + + deps = [ + ":video_codec_interface", + "../../api:array_view", + "../../api:field_trials_view", + "../../api:scoped_refptr", + "../../api:sequence_checker", + "../../api/units:time_delta", + "../../api/video:encoded_frame", + "../../api/video:encoded_image", + "../../api/video:video_adaptation", + "../../api/video:video_bitrate_allocation", + "../../api/video:video_bitrate_allocator", + "../../api/video:video_codec_constants", + "../../api/video:video_frame", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../modules/rtp_rtcp", + "../../rtc_base:bitstream_reader", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base:rate_statistics", + "../../rtc_base:refcount", + "../../rtc_base:rtc_numerics", + "../../rtc_base:stringutils", + "../../rtc_base:timeutils", + "../../rtc_base:weak_ptr", + "../../rtc_base/experiments:bandwidth_quality_scaler_settings", + "../../rtc_base/experiments:encoder_info_settings", + "../../rtc_base/experiments:quality_scaler_settings", + "../../rtc_base/experiments:quality_scaling_experiment", + "../../rtc_base/experiments:rate_control_settings", + "../../rtc_base/experiments:stable_target_rate_experiment", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/system:arch", + "../../rtc_base/system:file_wrapper", + "../../rtc_base/system:no_unique_address", + "../../rtc_base/task_utils:repeating_task", + "../../system_wrappers:field_trial", + "../rtp_rtcp:rtp_rtcp_format", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/numeric:bits", + "//third_party/abseil-cpp/absl/strings:strings", + "//third_party/abseil-cpp/absl/types:optional", + ] +} + +rtc_library("webrtc_h264") { + visibility = [ "*" ] + sources = [ + "codecs/h264/h264.cc", + "codecs/h264/h264_color_space.cc", + "codecs/h264/h264_color_space.h", + "codecs/h264/h264_decoder_impl.cc", + "codecs/h264/h264_decoder_impl.h", + "codecs/h264/h264_encoder_impl.cc", + "codecs/h264/h264_encoder_impl.h", + "codecs/h264/include/h264.h", + ] + + defines = [] + deps = [ + ":video_codec_interface", + ":video_coding_utility", + "../../api/video:video_frame", + "../../api/video:video_frame_i010", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:scalability_mode", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../media:rtc_media_base", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:event_tracer", + "../../rtc_base:logging", + "../../rtc_base:timeutils", + "../../rtc_base/system:rtc_export", + "../../system_wrappers:field_trial", + "../../system_wrappers:metrics", + "//third_party/libyuv", + ] + if (build_with_mozilla) { + deps -= [ "//third_party/libyuv" ] + } + absl_deps = [ + "//third_party/abseil-cpp/absl/container:inlined_vector", + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + + if (rtc_use_h264) { + deps += [ + "//third_party/ffmpeg", + "//third_party/openh264:encoder", + ] + if (!build_with_mozilla) { + deps += [ "../../media:rtc_media_base" ] + } + } + if (build_with_mozilla) { + include_dirs = [ + "/media/libyuv", + "/media/libyuv/libyuv/include", + ] + } +} + +rtc_library("webrtc_multiplex") { + sources = [ + "codecs/multiplex/augmented_video_frame_buffer.cc", + "codecs/multiplex/include/augmented_video_frame_buffer.h", + "codecs/multiplex/include/multiplex_decoder_adapter.h", + "codecs/multiplex/include/multiplex_encoder_adapter.h", + "codecs/multiplex/multiplex_decoder_adapter.cc", + "codecs/multiplex/multiplex_encoded_image_packer.cc", + "codecs/multiplex/multiplex_encoded_image_packer.h", + "codecs/multiplex/multiplex_encoder_adapter.cc", + ] + + deps = [ + ":video_codec_interface", + ":video_coding_utility", + "../../api:fec_controller_api", + "../../api:scoped_refptr", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../media:rtc_media_base", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base/synchronization:mutex", + "../rtp_rtcp:rtp_rtcp_format", + ] +} + +# This target defines a bare-bones interface towards libvpx, used by the +# VP8 and VP9 wrappers below. +rtc_library("webrtc_libvpx_interface") { + visibility = [ "*" ] + sources = [ + "codecs/interface/libvpx_interface.cc", + "codecs/interface/libvpx_interface.h", + ] + deps = [ "../../rtc_base:checks" ] + if (rtc_build_libvpx) { + deps += [ rtc_libvpx_dir ] + } +} + +if (!build_with_mozilla) { +rtc_library("mock_libvpx_interface") { + testonly = true + sources = [ "codecs/interface/mock_libvpx_interface.h" ] + deps = [ + ":webrtc_libvpx_interface", + "../../test:test_support", + ] +} +} + +# This target includes the internal SW codec. +rtc_library("webrtc_vp8") { + visibility = [ "*" ] + poisonous = [ "software_video_codecs" ] + sources = [ + "codecs/vp8/include/vp8.h", + "codecs/vp8/libvpx_vp8_decoder.cc", + "codecs/vp8/libvpx_vp8_decoder.h", + "codecs/vp8/libvpx_vp8_encoder.cc", + "codecs/vp8/libvpx_vp8_encoder.h", + ] + + deps = [ + ":codec_globals_headers", + ":video_codec_interface", + ":video_coding_utility", + ":webrtc_libvpx_interface", + ":webrtc_vp8_scalability", + ":webrtc_vp8_temporal_layers", + "../../api:fec_controller_api", + "../../api:scoped_refptr", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../api/video_codecs:vp8_temporal_layers_factory", + "../../common_video", + "../../rtc_base:checks", + "../../rtc_base:event_tracer", + "../../rtc_base:logging", + "../../rtc_base:rtc_numerics", + "../../rtc_base:timeutils", + "../../rtc_base/experiments:cpu_speed_experiment", + "../../rtc_base/experiments:encoder_info_settings", + "../../rtc_base/experiments:field_trial_parser", + "../../rtc_base/experiments:rate_control_settings", + "../../system_wrappers:field_trial", + "../../system_wrappers:metrics", + "svc:scalability_mode_util", + "//third_party/libyuv", + ] + if (build_with_mozilla) { + deps -= [ "//third_party/libyuv" ] + } + absl_deps = [ + "//third_party/abseil-cpp/absl/algorithm:container", + "//third_party/abseil-cpp/absl/strings:strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + if (rtc_build_libvpx) { + deps += [ rtc_libvpx_dir ] + } + if (build_with_mozilla) { + include_dirs = [ + "/media/libyuv", + "/media/libyuv/libyuv/include", + ] + } +} + +rtc_source_set("webrtc_vp8_scalability") { + sources = [ + "codecs/vp8/vp8_scalability.cc", + "codecs/vp8/vp8_scalability.h", + ] + deps = [ "../../api/video_codecs:scalability_mode" ] +} + +rtc_library("webrtc_vp8_temporal_layers") { + visibility = [ "*" ] + sources = [ + "codecs/vp8/default_temporal_layers.cc", + "codecs/vp8/default_temporal_layers.h", + "codecs/vp8/include/temporal_layers_checker.h", + "codecs/vp8/screenshare_layers.cc", + "codecs/vp8/screenshare_layers.h", + "codecs/vp8/temporal_layers.h", + "codecs/vp8/temporal_layers_checker.cc", + ] + + deps = [ + ":codec_globals_headers", + ":video_codec_interface", + ":video_coding_utility", + "../../api:fec_controller_api", + "../../api/video_codecs:video_codecs_api", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base:macromagic", + "../../rtc_base:rate_statistics", + "../../rtc_base:rtc_numerics", + "../../rtc_base:timeutils", + "../../system_wrappers:field_trial", + "../../system_wrappers:metrics", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] +} + +# This target includes VP9 files that may be used for any VP9 codec, internal SW or external HW. +rtc_library("webrtc_vp9_helpers") { + sources = [ + "codecs/vp9/svc_config.cc", + "codecs/vp9/svc_config.h", + ] + + deps = [ + ":codec_globals_headers", + ":video_codec_interface", + "../../api/video:video_bitrate_allocation", + "../../api/video:video_bitrate_allocator", + "../../api/video:video_codec_constants", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../media:rtc_media_base", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base/experiments:stable_target_rate_experiment", + "svc:scalability_mode_util", + "svc:scalability_structures", + "svc:scalable_video_controller", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] +} + +rtc_library("webrtc_vp9") { + visibility = [ "*" ] + poisonous = [ "software_video_codecs" ] + sources = [ + "codecs/vp9/include/vp9.h", + "codecs/vp9/libvpx_vp9_decoder.cc", + "codecs/vp9/libvpx_vp9_decoder.h", + "codecs/vp9/libvpx_vp9_encoder.cc", + "codecs/vp9/libvpx_vp9_encoder.h", + "codecs/vp9/vp9.cc", + "codecs/vp9/vp9_frame_buffer_pool.cc", + "codecs/vp9/vp9_frame_buffer_pool.h", + ] + + deps = [ + ":video_codec_interface", + ":video_coding_utility", + ":webrtc_libvpx_interface", + ":webrtc_vp9_helpers", + "../../api:fec_controller_api", + "../../api:field_trials_view", + "../../api:refcountedbase", + "../../api:scoped_refptr", + "../../api/transport:field_trial_based_config", + "../../api/video:video_frame", + "../../api/video:video_frame_i010", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:scalability_mode", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../media:rtc_media_base", + "../../rtc_base", + "../../rtc_base:buffer", + "../../rtc_base:checks", + "../../rtc_base:event_tracer", + "../../rtc_base:logging", + "../../rtc_base:stringutils", + "../../rtc_base:timeutils", + "../../rtc_base/containers:flat_map", + "../../rtc_base/experiments:encoder_info_settings", + "../../rtc_base/experiments:field_trial_parser", + "../../rtc_base/experiments:rate_control_settings", + "../../rtc_base/synchronization:mutex", + "../../system_wrappers:field_trial", + "../rtp_rtcp:rtp_rtcp_format", + "svc:scalability_mode_util", + "svc:scalability_structures", + "svc:scalable_video_controller", + "svc:svc_rate_allocator", + "//third_party/libyuv", + ] + if (build_with_mozilla) { + deps -= [ "//third_party/libyuv" ] + include_dirs = [ + "/media/libyuv", + "/media/libyuv/libyuv/include", + ] + } + absl_deps = [ + "//third_party/abseil-cpp/absl/algorithm:container", + "//third_party/abseil-cpp/absl/container:inlined_vector", + "//third_party/abseil-cpp/absl/memory", + "//third_party/abseil-cpp/absl/strings:strings", + ] + if (rtc_build_libvpx) { + deps += [ rtc_libvpx_dir ] + } +} + +if (rtc_include_tests) { + if (is_android) { + rtc_library("android_codec_factory_helper") { + sources = [ + "codecs/test/android_codec_factory_helper.cc", + "codecs/test/android_codec_factory_helper.h", + ] + + deps = [ + "../../api/video_codecs:video_codecs_api", + "../../modules/utility:utility", + "../../rtc_base:checks", + "../../rtc_base:ignore_wundef", + "../../sdk/android:internal_jni", + "../../sdk/android:native_api_base", + "../../sdk/android:native_api_codecs", + "../../sdk/android:native_api_jni", + ] + } + } + + if (is_ios || is_mac) { + rtc_library("objc_codec_factory_helper") { + sources = [ + "codecs/test/objc_codec_factory_helper.h", + "codecs/test/objc_codec_factory_helper.mm", + ] + + deps = [ + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../media:rtc_audio_video", + "../../media:rtc_media_base", + "../../sdk:native_api", + "../../sdk:peerconnectionfactory_base_objc", + "../../sdk:videocodec_objc", + "../../sdk:videosource_objc", + "../../sdk:videotoolbox_objc", + ] + } + } + + rtc_library("encoded_video_frame_producer") { + testonly = true + sources = [ + "codecs/test/encoded_video_frame_producer.cc", + "codecs/test/encoded_video_frame_producer.h", + ] + deps = [ + ":video_codec_interface", + "../../api:create_frame_generator", + "../../api:frame_generator_api", + "../../api/transport/rtp:dependency_descriptor", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_frame_type", + "../../api/video_codecs:video_codecs_api", + "../../rtc_base:checks", + ] + } + + rtc_library("simulcast_test_fixture_impl") { + testonly = true + sources = [ + "utility/simulcast_test_fixture_impl.cc", + "utility/simulcast_test_fixture_impl.h", + ] + + deps = [ + ":video_codec_interface", + ":video_coding", + ":video_coding_utility", + "../../api:mock_video_decoder", + "../../api:mock_video_encoder", + "../../api:simulcast_test_fixture_api", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../rtc_base:checks", + "../../test:test_support", + ] + } + + rtc_library("video_codecs_test_framework") { + testonly = true + sources = [ + "codecs/test/video_codec_unittest.cc", + "codecs/test/video_codec_unittest.h", + "codecs/test/videoprocessor.cc", + "codecs/test/videoprocessor.h", + ] + + deps = [ + ":codec_globals_headers", + ":video_codec_interface", + ":video_coding", + ":video_coding_utility", + ":videocodec_test_stats_impl", + ":webrtc_vp9_helpers", + "..:module_api", + "../../api:create_frame_generator", + "../../api:frame_generator_api", + "../../api:scoped_refptr", + "../../api:sequence_checker", + "../../api:videocodec_test_fixture_api", + "../../api/task_queue", + "../../api/video:builtin_video_bitrate_allocator_factory", + "../../api/video:encoded_image", + "../../api/video:video_bitrate_allocation", + "../../api/video:video_bitrate_allocator", + "../../api/video:video_bitrate_allocator_factory", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../rtc_base:buffer", + "../../rtc_base:checks", + "../../rtc_base:macromagic", + "../../rtc_base:rtc_event", + "../../rtc_base:timeutils", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/system:no_unique_address", + "../../test:test_support", + "../../test:video_test_common", + "../../test:video_test_support", + "../rtp_rtcp:rtp_rtcp_format", + "//third_party/libyuv", + ] + if (build_with_mozilla) { + deps -= [ "//third_party/libyuv" ] + } + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + if (build_with_mozilla) { + include_dirs = [ + "/media/libyuv", + "/media/libyuv/libyuv/include", + ] + } + } + + video_coding_modules_tests_resources = [] + if (is_android) { + video_coding_modules_tests_resources += [ + "../../resources/foreman_128x96.yuv", + "../../resources/foreman_160x120.yuv", + "../../resources/foreman_176x144.yuv", + "../../resources/foreman_240x136.yuv", + "../../resources/foreman_320x240.yuv", + "../../resources/foreman_480x272.yuv", + ] + } + if (!is_android) { + video_coding_modules_tests_resources += [ + "../../resources/ConferenceMotion_1280_720_50.yuv", + "../../resources/FourPeople_1280x720_30.yuv", + ] + } + + num_video_coding_modules_tests_resources = 0 + foreach(i, video_coding_modules_tests_resources) { + num_video_coding_modules_tests_resources += 1 + } + + if (num_video_coding_modules_tests_resources > 0) { + if (is_ios || is_mac) { + bundle_data("video_coding_modules_tests_resources_bundle_data") { + testonly = true + sources = video_coding_modules_tests_resources + outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] + } + } + } + + rtc_library("videocodec_test_impl") { + testonly = true + sources = [ + "codecs/test/videocodec_test_fixture_impl.cc", + "codecs/test/videocodec_test_fixture_impl.h", + ] + deps = [ + ":codec_globals_headers", + ":video_codec_interface", + ":video_codecs_test_framework", + ":video_coding_utility", + ":videocodec_test_stats_impl", + ":webrtc_vp9_helpers", + "../../api:array_view", + "../../api:videocodec_test_fixture_api", + "../../api/test/video:function_video_factory", + "../../api/transport:field_trial_based_config", + "../../api/video:video_bitrate_allocation", + "../../api/video_codecs:video_codecs_api", + "../../api/video_codecs:video_decoder_factory_template", + "../../api/video_codecs:video_decoder_factory_template_dav1d_adapter", + "../../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", + "../../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", + "../../api/video_codecs:video_decoder_factory_template_open_h264_adapter", + "../../api/video_codecs:video_encoder_factory_template", + "../../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", + "../../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", + "../../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", + "../../api/video_codecs:video_encoder_factory_template_open_h264_adapter", + "../../call:video_stream_api", + "../../common_video", + "../../media:rtc_audio_video", + "../../media:rtc_media_base", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base:rtc_base_tests_utils", + "../../rtc_base:stringutils", + "../../rtc_base:task_queue_for_test", + "../../rtc_base:timeutils", + "../../system_wrappers", + "../../test:fileutils", + "../../test:perf_test", + "../../test:test_support", + "../../test:video_test_common", + "../../test:video_test_support", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings:strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + } + + rtc_library("videocodec_test_stats_impl") { + testonly = true + sources = [ + "codecs/test/videocodec_test_stats_impl.cc", + "codecs/test/videocodec_test_stats_impl.h", + ] + deps = [ + "../../api:videocodec_test_fixture_api", + "../../api/numerics", + "../../rtc_base:checks", + "../../rtc_base:rtc_numerics", + "../../rtc_base:stringutils", + "../../test:test_common", + "../rtp_rtcp:rtp_rtcp_format", + ] + } + + rtc_library("video_coding_modules_tests") { + testonly = true + defines = [] + + sources = [ + "codecs/h264/test/h264_impl_unittest.cc", + "codecs/multiplex/test/multiplex_adapter_unittest.cc", + "codecs/test/video_encoder_decoder_instantiation_tests.cc", + "codecs/test/videocodec_test_av1.cc", + "codecs/test/videocodec_test_libvpx.cc", + "codecs/vp8/test/vp8_impl_unittest.cc", + ] + + if (rtc_libvpx_build_vp9) { + sources += [ "codecs/vp9/test/vp9_impl_unittest.cc" ] + } + + if (rtc_use_h264) { + sources += [ "codecs/test/videocodec_test_openh264.cc" ] + } + + deps = [ + ":encoded_video_frame_producer", + ":mock_libvpx_interface", + ":video_codec_interface", + ":video_codecs_test_framework", + ":video_coding_utility", + ":videocodec_test_impl", + ":webrtc_h264", + ":webrtc_libvpx_interface", + ":webrtc_multiplex", + ":webrtc_vp8", + ":webrtc_vp9", + ":webrtc_vp9_helpers", + "../../api:create_frame_generator", + "../../api:create_videocodec_test_fixture_api", + "../../api:frame_generator_api", + "../../api:mock_video_codec_factory", + "../../api:mock_video_decoder", + "../../api:mock_video_encoder", + "../../api:scoped_refptr", + "../../api:videocodec_test_fixture_api", + "../../api/test/video:function_video_factory", + "../../api/video:encoded_image", + "../../api/video:video_frame", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:rtc_software_fallback_wrappers", + "../../api/video_codecs:video_codecs_api", + "../../common_video", + "../../common_video/test:utilities", + "../../media:rtc_internal_video_codecs", + "../../media:rtc_media_base", + "../../media:rtc_simulcast_encoder_adapter", + "../../rtc_base", + "../../rtc_base:refcount", + "../../rtc_base:stringutils", + "../../rtc_base:timeutils", + "../../test:explicit_key_value_config", + "../../test:field_trial", + "../../test:fileutils", + "../../test:test_support", + "../../test:video_test_common", + "../rtp_rtcp:rtp_rtcp_format", + "codecs/av1:dav1d_decoder", + "codecs/av1:libaom_av1_decoder", + "//third_party/libyuv", + ] + if (build_with_mozilla) { + deps -= [ "//third_party/libyuv" ] + include_dirs = [ + "/media/libyuv", + "/media/libyuv/libyuv/include", + ] + } + absl_deps = [ + "//third_party/abseil-cpp/absl/memory", + "//third_party/abseil-cpp/absl/types:optional", + ] + + data = video_coding_modules_tests_resources + + if (is_android) { + sources += [ "codecs/test/videocodec_test_mediacodec.cc" ] + + deps += [ ":android_codec_factory_helper" ] + } + + if (is_ios || is_mac) { + sources += [ "codecs/test/videocodec_test_videotoolbox.cc" ] + + deps += [ ":objc_codec_factory_helper" ] + + if (num_video_coding_modules_tests_resources > 0) { + deps += [ ":video_coding_modules_tests_resources_bundle_data" ] + } + } + + if (rtc_build_libvpx) { + deps += [ rtc_libvpx_dir ] + } + } + + rtc_library("video_coding_unittests") { + testonly = true + + sources = [ + "chain_diff_calculator_unittest.cc", + "codecs/test/videocodec_test_fixture_config_unittest.cc", + "codecs/test/videocodec_test_stats_impl_unittest.cc", + "codecs/test/videoprocessor_unittest.cc", + "codecs/vp8/default_temporal_layers_unittest.cc", + "codecs/vp8/libvpx_vp8_simulcast_test.cc", + "codecs/vp8/screenshare_layers_unittest.cc", + "codecs/vp9/svc_config_unittest.cc", + "decoding_state_unittest.cc", + "fec_controller_unittest.cc", + "frame_buffer2_unittest.cc", + "frame_dependencies_calculator_unittest.cc", + "generic_decoder_unittest.cc", + "h264_packet_buffer_unittest.cc", + "h264_sprop_parameter_sets_unittest.cc", + "h264_sps_pps_tracker_unittest.cc", + "histogram_unittest.cc", + "jitter_buffer_unittest.cc", + "loss_notification_controller_unittest.cc", + "nack_requester_unittest.cc", + "packet_buffer_unittest.cc", + "receiver_unittest.cc", + "rtp_frame_reference_finder_unittest.cc", + "rtp_vp8_ref_finder_unittest.cc", + "rtp_vp9_ref_finder_unittest.cc", + "session_info_unittest.cc", + "test/stream_generator.cc", + "test/stream_generator.h", + "utility/bandwidth_quality_scaler_unittest.cc", + "utility/decoded_frames_history_unittest.cc", + "utility/frame_dropper_unittest.cc", + "utility/framerate_controller_deprecated_unittest.cc", + "utility/ivf_file_reader_unittest.cc", + "utility/ivf_file_writer_unittest.cc", + "utility/qp_parser_unittest.cc", + "utility/quality_scaler_unittest.cc", + "utility/simulcast_rate_allocator_unittest.cc", + "utility/vp9_uncompressed_header_parser_unittest.cc", + "video_codec_initializer_unittest.cc", + "video_receiver_unittest.cc", + ] + if (rtc_use_h264) { + sources += [ + "codecs/h264/h264_encoder_impl_unittest.cc", + "codecs/h264/h264_simulcast_unittest.cc", + ] + } + + deps = [ + ":chain_diff_calculator", + ":codec_globals_headers", + ":encoded_frame", + ":frame_buffer2", + ":frame_dependencies_calculator", + ":h264_packet_buffer", + ":nack_requester", + ":packet_buffer", + ":simulcast_test_fixture_impl", + ":video_codec_interface", + ":video_codecs_test_framework", + ":video_coding", + ":video_coding_legacy", + ":video_coding_utility", + ":videocodec_test_impl", + ":videocodec_test_stats_impl", + ":webrtc_h264", + ":webrtc_vp8", + ":webrtc_vp8_temporal_layers", + ":webrtc_vp9", + ":webrtc_vp9_helpers", + "..:module_fec_api", + "../../api:array_view", + "../../api:create_simulcast_test_fixture_api", + "../../api:fec_controller_api", + "../../api:mock_fec_controller_override", + "../../api:mock_video_decoder", + "../../api:mock_video_encoder", + "../../api:rtp_packet_info", + "../../api:scoped_refptr", + "../../api:simulcast_test_fixture_api", + "../../api:videocodec_test_fixture_api", + "../../api/task_queue", + "../../api/task_queue:default_task_queue_factory", + "../../api/test/video:function_video_factory", + "../../api/units:data_size", + "../../api/units:frequency", + "../../api/units:time_delta", + "../../api/units:timestamp", + "../../api/video:builtin_video_bitrate_allocator_factory", + "../../api/video:encoded_frame", + "../../api/video:render_resolution", + "../../api/video:video_adaptation", + "../../api/video:video_bitrate_allocation", + "../../api/video:video_bitrate_allocator", + "../../api/video:video_bitrate_allocator_factory", + "../../api/video:video_frame", + "../../api/video:video_frame_type", + "../../api/video:video_rtp_headers", + "../../api/video_codecs:video_codecs_api", + "../../api/video_codecs:vp8_temporal_layers_factory", + "../../common_video", + "../../common_video/generic_frame_descriptor", + "../../common_video/test:utilities", + "../../media:rtc_media_base", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:histogram_percentile_counter", + "../../rtc_base:location", + "../../rtc_base:platform_thread", + "../../rtc_base:random", + "../../rtc_base:refcount", + "../../rtc_base:rtc_base_tests_utils", + "../../rtc_base:rtc_event", + "../../rtc_base:rtc_numerics", + "../../rtc_base:stringutils", + "../../rtc_base:task_queue_for_test", + "../../rtc_base:timeutils", + "../../rtc_base/experiments:encoder_info_settings", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/system:unused", + "../../system_wrappers", + "../../system_wrappers:field_trial", + "../../system_wrappers:metrics", + "../../test:fake_encoded_frame", + "../../test:fake_video_codecs", + "../../test:field_trial", + "../../test:fileutils", + "../../test:run_loop", + "../../test:scoped_key_value_config", + "../../test:test_support", + "../../test:video_test_common", + "../../test:video_test_support", + "../../test/time_controller:time_controller", + "../rtp_rtcp:rtp_rtcp_format", + "../rtp_rtcp:rtp_video_header", + "codecs/av1:video_coding_codecs_av1_tests", + "svc:scalability_structure_tests", + "svc:svc_rate_allocator_tests", + "timing:jitter_estimator", + "timing:timing_module", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/memory", + "//third_party/abseil-cpp/absl/types:optional", + "//third_party/abseil-cpp/absl/types:variant", + ] + if (rtc_build_libvpx) { + deps += [ rtc_libvpx_dir ] + } + } +} |