Files
platform-external-webrtc/logging/BUILD.gn
Elad Alon ff43541927 Delta compression efficiency improvement for non-existent base
Before this CL, when we encoded a sequence with a non-existent
base, we pretended that the delta was 0, and the first delta was
based on that. However, in a sequence where the deltas are small,
but where the first element is big, that would produce
unnecessarily wide deltas. Therefore, we change the behavior in
cases where the base is non-existent, to encode the first existent
value (if any) as a varint; the delta width may then be smaller.

This CL include two piggy-backed changes:
1. Varint encoding/decoding moved to its own file (and an
   additional flavor added).
2. The unit tests for delta encoding are further parameterized
   with a random seed.

Bug: webrtc:8111
Change-Id: I76fff577c86d019c8334bf74b76bd35db06ff68d
Reviewed-on: https://webrtc-review.googlesource.com/c/107860
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25395}
2018-10-26 18:17:40 +00:00

461 lines
13 KiB
Plaintext

# Copyright (c) 2016 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("../webrtc.gni")
if (!build_with_mozilla) {
import("//third_party/protobuf/proto_library.gni")
}
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
group("logging") {
deps = [
":rtc_event_audio",
":rtc_event_bwe",
":rtc_event_log_impl_base",
":rtc_event_log_impl_encoder",
":rtc_event_log_impl_output",
":rtc_event_pacing",
":rtc_event_rtp_rtcp",
":rtc_event_video",
]
}
rtc_source_set("rtc_event_log_api") {
sources = [
"rtc_event_log/encoder/rtc_event_log_encoder.h",
"rtc_event_log/events/rtc_event.h",
"rtc_event_log/rtc_event_log.cc",
"rtc_event_log/rtc_event_log.h",
"rtc_event_log/rtc_event_log_factory_interface.h",
]
deps = [
"../api:libjingle_logging_api",
"../rtc_base:ptr_util",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("rtc_stream_config") {
sources = [
"rtc_event_log/rtc_stream_config.cc",
"rtc_event_log/rtc_stream_config.h",
]
deps = [
":rtc_event_log_api",
"..:webrtc_common",
"../api:libjingle_peerconnection_api",
]
}
rtc_source_set("rtc_event_pacing") {
sources = [
"rtc_event_log/events/rtc_event_alr_state.cc",
"rtc_event_log/events/rtc_event_alr_state.h",
]
deps = [
":rtc_event_log_api",
"../rtc_base:ptr_util",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("rtc_event_audio") {
sources = [
"rtc_event_log/events/rtc_event_audio_network_adaptation.cc",
"rtc_event_log/events/rtc_event_audio_network_adaptation.h",
"rtc_event_log/events/rtc_event_audio_playout.cc",
"rtc_event_log/events/rtc_event_audio_playout.h",
"rtc_event_log/events/rtc_event_audio_receive_stream_config.cc",
"rtc_event_log/events/rtc_event_audio_receive_stream_config.h",
"rtc_event_log/events/rtc_event_audio_send_stream_config.cc",
"rtc_event_log/events/rtc_event_audio_send_stream_config.h",
]
deps = [
":rtc_event_log_api",
":rtc_stream_config",
"../modules/audio_coding:audio_network_adaptor_config",
"../rtc_base:ptr_util",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("rtc_event_bwe") {
sources = [
"rtc_event_log/events/rtc_event_bwe_update_delay_based.cc",
"rtc_event_log/events/rtc_event_bwe_update_delay_based.h",
"rtc_event_log/events/rtc_event_bwe_update_loss_based.cc",
"rtc_event_log/events/rtc_event_bwe_update_loss_based.h",
"rtc_event_log/events/rtc_event_probe_cluster_created.cc",
"rtc_event_log/events/rtc_event_probe_cluster_created.h",
"rtc_event_log/events/rtc_event_probe_result_failure.cc",
"rtc_event_log/events/rtc_event_probe_result_failure.h",
"rtc_event_log/events/rtc_event_probe_result_success.cc",
"rtc_event_log/events/rtc_event_probe_result_success.h",
]
deps = [
":rtc_event_log_api",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../rtc_base:ptr_util",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("rtc_event_rtp_rtcp") {
sources = [
"rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc",
"rtc_event_log/events/rtc_event_rtcp_packet_incoming.h",
"rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc",
"rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h",
"rtc_event_log/events/rtc_event_rtp_packet_incoming.cc",
"rtc_event_log/events/rtc_event_rtp_packet_incoming.h",
"rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc",
"rtc_event_log/events/rtc_event_rtp_packet_outgoing.h",
]
deps = [
":rtc_event_log_api",
"../api:array_view",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:ptr_util",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("rtc_event_video") {
sources = [
"rtc_event_log/events/rtc_event_video_receive_stream_config.cc",
"rtc_event_log/events/rtc_event_video_receive_stream_config.h",
"rtc_event_log/events/rtc_event_video_send_stream_config.cc",
"rtc_event_log/events/rtc_event_video_send_stream_config.h",
]
deps = [
":rtc_event_log_api",
":rtc_stream_config",
"../rtc_base:ptr_util",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_static_library("rtc_event_log_impl_encoder") {
visibility = [ "*" ]
sources = [
"rtc_event_log/encoder/blob_encoding.cc",
"rtc_event_log/encoder/blob_encoding.h",
"rtc_event_log/encoder/delta_encoding.cc",
"rtc_event_log/encoder/delta_encoding.h",
"rtc_event_log/encoder/varint.cc",
"rtc_event_log/encoder/varint.h",
]
defines = []
deps = [
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings:strings",
"//third_party/abseil-cpp/absl/types:optional",
]
if (rtc_enable_protobuf) {
defines += [ "ENABLE_RTC_EVENT_LOG" ]
deps += [
":ice_log",
":rtc_event_audio",
":rtc_event_bwe",
":rtc_event_log2_proto",
":rtc_event_log_api",
":rtc_event_log_impl_output",
":rtc_event_log_proto",
":rtc_event_pacing",
":rtc_event_rtp_rtcp",
":rtc_event_video",
":rtc_stream_config",
"../api:array_view",
"../modules/audio_coding:audio_network_adaptor",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../modules/rtp_rtcp:rtp_rtcp_format",
]
sources += [
"rtc_event_log/encoder/rtc_event_log_encoder_legacy.cc",
"rtc_event_log/encoder/rtc_event_log_encoder_legacy.h",
"rtc_event_log/encoder/rtc_event_log_encoder_new_format.cc",
"rtc_event_log/encoder/rtc_event_log_encoder_new_format.h",
]
}
}
rtc_source_set("rtc_event_log_impl_output") {
sources = [
"rtc_event_log/output/rtc_event_log_output_file.cc",
"rtc_event_log/output/rtc_event_log_output_file.h",
]
deps = [
":rtc_event_log_api",
"../api:libjingle_logging_api",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
]
}
rtc_static_library("rtc_event_log_impl_base") {
visibility = [ "*" ]
sources = [
"rtc_event_log/rtc_event_log_factory.cc",
"rtc_event_log/rtc_event_log_factory.h",
"rtc_event_log/rtc_event_log_impl.cc",
]
defines = []
deps = [
":ice_log",
":rtc_event_log_api",
"../api:libjingle_logging_api",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"../rtc_base:safe_minmax",
"../rtc_base:sequenced_task_checker",
"//third_party/abseil-cpp/absl/memory",
]
if (rtc_enable_protobuf) {
defines += [ "ENABLE_RTC_EVENT_LOG" ]
deps += [ ":rtc_event_log_impl_encoder" ]
}
}
rtc_source_set("fake_rtc_event_log") {
testonly = true
sources = [
"rtc_event_log/fake_rtc_event_log.cc",
"rtc_event_log/fake_rtc_event_log.h",
"rtc_event_log/fake_rtc_event_log_factory.cc",
"rtc_event_log/fake_rtc_event_log_factory.h",
]
deps = [
":ice_log",
":rtc_event_log_api",
"../rtc_base:checks",
"../rtc_base:rtc_base",
]
}
if (rtc_enable_protobuf) {
proto_library("rtc_event_log_proto") {
sources = [
"rtc_event_log/rtc_event_log.proto",
]
proto_out_dir = "logging/rtc_event_log"
}
proto_library("rtc_event_log2_proto") {
sources = [
"rtc_event_log/rtc_event_log2.proto",
]
proto_out_dir = "logging/rtc_event_log"
}
rtc_static_library("rtc_event_log_parser") {
visibility = [ "*" ]
sources = [
"rtc_event_log/rtc_event_log_parser.cc",
"rtc_event_log/rtc_event_log_parser.h",
"rtc_event_log/rtc_event_log_parser_new.cc",
"rtc_event_log/rtc_event_log_parser_new.h",
"rtc_event_log/rtc_event_processor.h",
]
deps = [
":ice_log",
":rtc_event_bwe",
":rtc_event_log2_proto",
":rtc_event_log_api",
":rtc_event_log_proto",
":rtc_stream_config",
"..:webrtc_common",
"../api:libjingle_peerconnection_api",
"../call:video_stream_api",
"../modules/audio_coding:audio_network_adaptor",
"../modules/congestion_controller/rtp:transport_feedback",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:checks",
"../rtc_base:protobuf_utils",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/types:optional",
]
}
if (rtc_include_tests) {
rtc_source_set("rtc_event_log_tests") {
testonly = true
assert(rtc_enable_protobuf)
defines = [ "ENABLE_RTC_EVENT_LOG" ]
sources = [
"rtc_event_log/encoder/blob_encoding_unittest.cc",
"rtc_event_log/encoder/delta_encoding_unittest.cc",
"rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc",
"rtc_event_log/output/rtc_event_log_output_file_unittest.cc",
"rtc_event_log/rtc_event_log_unittest.cc",
"rtc_event_log/rtc_event_log_unittest_helper.cc",
"rtc_event_log/rtc_event_log_unittest_helper.h",
"rtc_event_log/rtc_event_processor_unittest.cc",
]
deps = [
":ice_log",
":rtc_event_audio",
":rtc_event_bwe",
":rtc_event_log2_proto",
":rtc_event_log_api",
":rtc_event_log_impl_base",
":rtc_event_log_impl_encoder",
":rtc_event_log_impl_output",
":rtc_event_log_parser",
":rtc_event_log_proto",
":rtc_event_pacing",
":rtc_event_rtp_rtcp",
":rtc_event_video",
":rtc_stream_config",
"../api:libjingle_peerconnection_api",
"../call",
"../call:call_interfaces",
"../modules/audio_coding:audio_network_adaptor",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_base_tests_utils",
"../test:fileutils",
"../test:test_support",
"//testing/gtest",
"//third_party/abseil-cpp/absl/memory",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
rtc_test("rtc_event_log2rtp_dump") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log2rtp_dump.cc",
]
deps = [
":rtc_event_log_api",
":rtc_event_log_parser",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:checks",
"../rtc_base:protobuf_utils",
"../rtc_base:rtc_base_approved",
"../test:rtp_test_utils",
"//third_party/abseil-cpp/absl/memory:memory",
"//third_party/abseil-cpp/absl/types:optional",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
}
if (rtc_include_tests) {
rtc_executable("rtc_event_log2text") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log2text.cc",
]
deps = [
":rtc_event_log_api",
":rtc_event_log_parser",
"../:webrtc_common",
"../call:video_stream_api",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:checks",
"../rtc_base:protobuf_utils",
"../rtc_base:rtc_base_approved",
"../rtc_base:stringutils",
# TODO(kwiberg): Remove this dependency.
"../api/audio_codecs:audio_codecs_api",
"../modules/audio_coding:audio_network_adaptor_config",
"../modules/rtp_rtcp",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
}
if (rtc_include_tests) {
rtc_executable("rtc_event_log2stats") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log2stats.cc",
]
deps = [
":rtc_event_log_api",
":rtc_event_log_proto",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
]
}
}
}
rtc_source_set("ice_log") {
sources = [
"rtc_event_log/events/rtc_event_ice_candidate_pair.cc",
"rtc_event_log/events/rtc_event_ice_candidate_pair.h",
"rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc",
"rtc_event_log/events/rtc_event_ice_candidate_pair_config.h",
"rtc_event_log/icelogger.cc",
"rtc_event_log/icelogger.h",
]
deps = [
":rtc_event_log_api",
"../api:libjingle_logging_api",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
]
}
if (rtc_include_tests) {
rtc_source_set("mocks") {
testonly = true
sources = [
"rtc_event_log/mock/mock_rtc_event_log.cc",
"rtc_event_log/mock/mock_rtc_event_log.h",
]
deps = [
":rtc_event_log_api",
"../test:test_support",
]
}
}