Exposing video bitrate allocator into API
In order to have public video bitrate allocator factory, the video bitrate allocator has be part of
the api.
Bug: webrtc:9513
Change-Id: Ia2e5ab9eb988c710c1ac492afccc470a92544aa2
Reviewed-on: https://webrtc-review.googlesource.com/88083
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jiawei Ou <ouj@fb.com>
Cr-Commit-Position: refs/heads/master@{#24073}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index d4cd733..e385c3c 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -425,6 +425,18 @@
]
}
+ rtc_source_set("mock_video_bitrate_allocator") {
+ testonly = true
+ sources = [
+ "test/mock_video_bitrate_allocator.h",
+ ]
+
+ deps = [
+ "../api/video:video_bitrate_allocator",
+ "../test:test_support",
+ ]
+ }
+
rtc_source_set("mock_video_codec_factory") {
testonly = true
sources = [
diff --git a/api/test/mock_video_bitrate_allocator.h b/api/test/mock_video_bitrate_allocator.h
new file mode 100644
index 0000000..d25537a
--- /dev/null
+++ b/api/test/mock_video_bitrate_allocator.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2018 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.
+ */
+
+#ifndef API_TEST_MOCK_VIDEO_BITRATE_ALLOCATOR_H_
+#define API_TEST_MOCK_VIDEO_BITRATE_ALLOCATOR_H_
+
+#include "api/video/video_bitrate_allocator.h"
+#include "test/gmock.h"
+
+namespace webrtc {
+
+class MockVideoBitrateAllocator : public webrtc::VideoBitrateAllocator {
+ MOCK_METHOD2(GetAllocation,
+ VideoBitrateAllocation(uint32_t total_bitrate,
+ uint32_t framerate));
+ MOCK_METHOD1(GetPreferredBitrateBps, uint32_t(uint32_t framerate));
+};
+
+} // namespace webrtc
+
+#endif // API_TEST_MOCK_VIDEO_BITRATE_ALLOCATOR_H_
diff --git a/api/video/BUILD.gn b/api/video/BUILD.gn
index d767048..73f477a 100644
--- a/api/video/BUILD.gn
+++ b/api/video/BUILD.gn
@@ -92,6 +92,16 @@
]
}
+rtc_source_set("video_bitrate_allocator") {
+ visibility = [ "*" ]
+ sources = [
+ "video_bitrate_allocator.h",
+ ]
+ deps = [
+ ":video_bitrate_allocation",
+ ]
+}
+
rtc_source_set("video_stream_decoder") {
visibility = [ "*" ]
sources = [
diff --git a/api/video/video_bitrate_allocator.h b/api/video/video_bitrate_allocator.h
new file mode 100644
index 0000000..f85c633
--- /dev/null
+++ b/api/video/video_bitrate_allocator.h
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+#ifndef API_VIDEO_VIDEO_BITRATE_ALLOCATOR_H_
+#define API_VIDEO_VIDEO_BITRATE_ALLOCATOR_H_
+
+#include "api/video/video_bitrate_allocation.h"
+
+namespace webrtc {
+
+class VideoBitrateAllocator {
+ public:
+ VideoBitrateAllocator() {}
+ virtual ~VideoBitrateAllocator() {}
+
+ virtual VideoBitrateAllocation GetAllocation(uint32_t total_bitrate_bps,
+ uint32_t framerate) = 0;
+};
+
+class VideoBitrateAllocationObserver {
+ public:
+ VideoBitrateAllocationObserver() {}
+ virtual ~VideoBitrateAllocationObserver() {}
+
+ virtual void OnBitrateAllocationUpdated(
+ const VideoBitrateAllocation& allocation) = 0;
+};
+
+} // namespace webrtc
+
+#endif // API_VIDEO_VIDEO_BITRATE_ALLOCATOR_H_
diff --git a/common_video/BUILD.gn b/common_video/BUILD.gn
index 3e06cb8..4cca478 100644
--- a/common_video/BUILD.gn
+++ b/common_video/BUILD.gn
@@ -45,6 +45,7 @@
"..:webrtc_common",
"../:typedefs",
"../api/video:video_bitrate_allocation",
+ "../api/video:video_bitrate_allocator",
"../api/video:video_frame",
"../api/video:video_frame_i420",
"../media:rtc_h264_profile_id",
diff --git a/common_video/include/video_bitrate_allocator.h b/common_video/include/video_bitrate_allocator.h
index 13b01ae..77a0fef 100644
--- a/common_video/include/video_bitrate_allocator.h
+++ b/common_video/include/video_bitrate_allocator.h
@@ -11,28 +11,6 @@
#ifndef COMMON_VIDEO_INCLUDE_VIDEO_BITRATE_ALLOCATOR_H_
#define COMMON_VIDEO_INCLUDE_VIDEO_BITRATE_ALLOCATOR_H_
-#include "api/video/video_bitrate_allocation.h"
-
-namespace webrtc {
-
-class VideoBitrateAllocator {
- public:
- VideoBitrateAllocator() {}
- virtual ~VideoBitrateAllocator() {}
-
- virtual VideoBitrateAllocation GetAllocation(uint32_t total_bitrate,
- uint32_t framerate) = 0;
-};
-
-class VideoBitrateAllocationObserver {
- public:
- VideoBitrateAllocationObserver() {}
- virtual ~VideoBitrateAllocationObserver() {}
-
- virtual void OnBitrateAllocationUpdated(
- const VideoBitrateAllocation& allocation) = 0;
-};
-
-} // namespace webrtc
+#include "api/video/video_bitrate_allocator.h"
#endif // COMMON_VIDEO_INCLUDE_VIDEO_BITRATE_ALLOCATOR_H_
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index da546cd..b6dd965 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -202,6 +202,7 @@
"../../api:transport_api",
"../../api/audio_codecs:audio_codecs_api",
"../../api/video:video_bitrate_allocation",
+ "../../api/video:video_bitrate_allocator",
"../../api/video_codecs:video_codecs_api",
"../../common_video",
"../../logging:rtc_event_audio",
@@ -426,6 +427,7 @@
"../../api:libjingle_peerconnection_api",
"../../api:transport_api",
"../../api/video:video_bitrate_allocation",
+ "../../api/video:video_bitrate_allocator",
"../../api/video:video_frame",
"../../api/video_codecs:video_codecs_api",
"../../call:rtp_receiver",
diff --git a/modules/rtp_rtcp/source/rtcp_receiver.cc b/modules/rtp_rtcp/source/rtcp_receiver.cc
index 491bd45..4966754 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver.cc
@@ -19,8 +19,8 @@
#include <vector>
#include "api/video/video_bitrate_allocation.h"
+#include "api/video/video_bitrate_allocator.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/rtp_rtcp/source/rtcp_packet/bye.h"
#include "modules/rtp_rtcp/source/rtcp_packet/common_header.h"
#include "modules/rtp_rtcp/source/rtcp_packet/compound_packet.h"
diff --git a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
index 41d4725..91ffd73 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
@@ -12,8 +12,8 @@
#include "api/array_view.h"
#include "api/video/video_bitrate_allocation.h"
+#include "api/video/video_bitrate_allocator.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/rtp_rtcp/mocks/mock_rtcp_bandwidth_observer.h"
#include "modules/rtp_rtcp/source/byte_io.h"
#include "modules/rtp_rtcp/source/rtcp_packet.h"
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 21d8490..7437603 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -159,6 +159,7 @@
"../../:typedefs",
"../../api:fec_controller_api",
"../../api/video:encoded_frame",
+ "../../api/video:video_bitrate_allocator",
"../../api/video:video_frame",
"../../api/video:video_frame_i420",
"../../api/video_codecs:video_codecs_api",
@@ -261,6 +262,7 @@
"..:module_api",
"../..:webrtc_common",
"../../:typedefs",
+ "../../api/video:video_bitrate_allocator",
"../../api/video_codecs:video_codecs_api",
"../../common_video",
"../../modules/rtp_rtcp",
@@ -445,6 +447,7 @@
deps = [
":video_codec_interface",
"../..:webrtc_common",
+ "../../api/video:video_bitrate_allocator",
"../../api/video_codecs:video_codecs_api",
"../../common_video",
"../../rtc_base:checks",
@@ -596,6 +599,7 @@
"../..:webrtc_common",
"../../:typedefs",
"../../api:videocodec_test_fixture_api",
+ "../../api/video:video_bitrate_allocator",
"../../api/video:video_frame",
"../../api/video:video_frame_i420",
"../../api/video_codecs:video_codecs_api",
@@ -834,6 +838,7 @@
"../../api:create_simulcast_test_fixture_api",
"../../api:simulcast_test_fixture_api",
"../../api:videocodec_test_fixture_api",
+ "../../api/video:video_bitrate_allocator",
"../../api/video:video_frame",
"../../api/video:video_frame_i420",
"../../api/video_codecs:video_codecs_api",
diff --git a/modules/video_coding/codecs/test/videoprocessor.h b/modules/video_coding/codecs/test/videoprocessor.h
index f3808f8..9f1fa13 100644
--- a/modules/video_coding/codecs/test/videoprocessor.h
+++ b/modules/video_coding/codecs/test/videoprocessor.h
@@ -18,8 +18,8 @@
#include "api/test/videocodec_test_fixture.h"
#include "api/test/videocodec_test_stats.h"
+#include "api/video/video_bitrate_allocator.h"
#include "api/video/video_frame.h"
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/video_coding/include/video_codec_interface.h"
#include "modules/video_coding/utility/ivf_file_writer.h"
#include "rtc_base/buffer.h"
diff --git a/modules/video_coding/codecs/vp9/svc_rate_allocator.h b/modules/video_coding/codecs/vp9/svc_rate_allocator.h
index 68ff0e5..10e22ed 100644
--- a/modules/video_coding/codecs/vp9/svc_rate_allocator.h
+++ b/modules/video_coding/codecs/vp9/svc_rate_allocator.h
@@ -15,8 +15,8 @@
#include <vector>
+#include "api/video/video_bitrate_allocator.h"
#include "api/video_codecs/video_codec.h"
-#include "common_video/include/video_bitrate_allocator.h"
namespace webrtc {
diff --git a/modules/video_coding/utility/default_video_bitrate_allocator.h b/modules/video_coding/utility/default_video_bitrate_allocator.h
index 56666da..6a9d040 100644
--- a/modules/video_coding/utility/default_video_bitrate_allocator.h
+++ b/modules/video_coding/utility/default_video_bitrate_allocator.h
@@ -11,8 +11,8 @@
#ifndef MODULES_VIDEO_CODING_UTILITY_DEFAULT_VIDEO_BITRATE_ALLOCATOR_H_
#define MODULES_VIDEO_CODING_UTILITY_DEFAULT_VIDEO_BITRATE_ALLOCATOR_H_
+#include "api/video/video_bitrate_allocator.h"
#include "api/video_codecs/video_codec.h"
-#include "common_video/include/video_bitrate_allocator.h"
namespace webrtc {
diff --git a/modules/video_coding/utility/simulcast_rate_allocator.h b/modules/video_coding/utility/simulcast_rate_allocator.h
index 5aaf515..594e88b 100644
--- a/modules/video_coding/utility/simulcast_rate_allocator.h
+++ b/modules/video_coding/utility/simulcast_rate_allocator.h
@@ -17,9 +17,9 @@
#include <memory>
#include <vector>
+#include "api/video/video_bitrate_allocator.h"
#include "api/video_codecs/video_encoder.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "rtc_base/constructormagic.h"
namespace webrtc {
diff --git a/modules/video_coding/video_codec_initializer.cc b/modules/video_coding/video_codec_initializer.cc
index fa8572a..fe59afc 100644
--- a/modules/video_coding/video_codec_initializer.cc
+++ b/modules/video_coding/video_codec_initializer.cc
@@ -10,9 +10,9 @@
#include "modules/video_coding/include/video_codec_initializer.h"
+#include "api/video/video_bitrate_allocator.h"
#include "api/video_codecs/video_encoder.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/video_coding/codecs/vp9/svc_config.h"
#include "modules/video_coding/codecs/vp9/svc_rate_allocator.h"
#include "modules/video_coding/include/video_coding_defines.h"
diff --git a/modules/video_coding/video_codec_initializer_unittest.cc b/modules/video_coding/video_codec_initializer_unittest.cc
index 9b3cf3e..80a3016 100644
--- a/modules/video_coding/video_codec_initializer_unittest.cc
+++ b/modules/video_coding/video_codec_initializer_unittest.cc
@@ -9,9 +9,9 @@
*/
#include "modules/video_coding/include/video_codec_initializer.h"
+#include "api/video/video_bitrate_allocator.h"
#include "api/video_codecs/video_encoder.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/video_coding/codecs/vp8/temporal_layers.h"
#include "modules/video_coding/codecs/vp9/include/vp9_globals.h"
#include "rtc_base/refcountedobject.h"
diff --git a/modules/video_coding/video_coding_impl.cc b/modules/video_coding/video_coding_impl.cc
index 77bd288..e02d4c0 100644
--- a/modules/video_coding/video_coding_impl.cc
+++ b/modules/video_coding/video_coding_impl.cc
@@ -13,8 +13,8 @@
#include <algorithm>
#include <utility>
+#include "api/video/video_bitrate_allocator.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/video_coding/encoded_frame.h"
#include "modules/video_coding/include/video_codec_initializer.h"
diff --git a/modules/video_coding/video_sender.cc b/modules/video_coding/video_sender.cc
index ec24a97..bae60ed 100644
--- a/modules/video_coding/video_sender.cc
+++ b/modules/video_coding/video_sender.cc
@@ -11,8 +11,8 @@
#include <algorithm> // std::max
+#include "api/video/video_bitrate_allocator.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/video_coding/encoded_frame.h"
#include "modules/video_coding/include/video_codec_interface.h"
diff --git a/video/BUILD.gn b/video/BUILD.gn
index a135696..844941a 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -61,6 +61,7 @@
"../api:fec_controller_api",
"../api:libjingle_peerconnection_api",
"../api:transport_api",
+ "../api/video:video_bitrate_allocator",
"../api/video:video_frame",
"../api/video:video_frame_i420",
"../api/video:video_stream_encoder",
diff --git a/video/video_send_stream_impl.h b/video/video_send_stream_impl.h
index 322c89a..f87356e 100644
--- a/video/video_send_stream_impl.h
+++ b/video/video_send_stream_impl.h
@@ -15,10 +15,10 @@
#include <unordered_set>
#include <vector>
+#include "api/video/video_bitrate_allocator.h"
#include "call/bitrate_allocator.h"
#include "call/rtp_video_sender_interface.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/utility/include/process_thread.h"
#include "modules/video_coding/utility/ivf_file_writer.h"
#include "rtc_base/weak_ptr.h"
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index 48b823a..69d3284 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -16,7 +16,7 @@
#include <utility>
#include "api/video/i420_buffer.h"
-#include "common_video/include/video_bitrate_allocator.h"
+#include "api/video/video_bitrate_allocator.h"
#include "common_video/include/video_frame.h"
#include "modules/video_coding/include/video_codec_initializer.h"
#include "modules/video_coding/include/video_coding.h"
diff --git a/video/video_stream_encoder.h b/video/video_stream_encoder.h
index ea4c6e2..e9558ba 100644
--- a/video/video_stream_encoder.h
+++ b/video/video_stream_encoder.h
@@ -17,13 +17,13 @@
#include <string>
#include <vector>
+#include "api/video/video_bitrate_allocator.h"
#include "api/video/video_rotation.h"
#include "api/video/video_sink_interface.h"
#include "api/video/video_stream_encoder_interface.h"
#include "api/video_codecs/video_encoder.h"
#include "call/video_send_stream.h"
#include "common_types.h" // NOLINT(build/include)
-#include "common_video/include/video_bitrate_allocator.h"
#include "modules/video_coding/include/video_coding_defines.h"
#include "modules/video_coding/utility/quality_scaler.h"
#include "modules/video_coding/video_coding_impl.h"