Create public EncodedFrame interface.
The plan is to:
1. Move FrameObject to api/video.
2. Rename FrameObject to EncodedFrame.
3. Move EncodedFrame out of the video_coding namespace.
This is the 1st CL.
Bug: webrtc:8909
Change-Id: I2e5100eda6c51bcefb32295e03b73cf1f5c213a4
Reviewed-on: https://webrtc-review.googlesource.com/55560
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22135}
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 1b7b511..3269276 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -8,6 +8,34 @@
import("../../webrtc.gni")
+rtc_static_library("encoded_frame") {
+ visibility = [ "*" ]
+ sources = [
+ "encoded_frame.cc",
+ "encoded_frame.h",
+ ]
+ deps = [
+ ":video_codec_interface",
+ "../../:webrtc_common",
+ "../../api:optional",
+ "../../api:video_frame_api_i420",
+ "../../common_video:common_video",
+ "../../modules:module_api",
+ "../../modules:module_api_public",
+ "../../modules/video_coding:video_coding_utility",
+ "../../rtc_base:checks",
+ "../../rtc_base:rtc_base_approved",
+ "../../rtc_base/experiments:alr_experiment",
+ "../../system_wrappers:field_trial_api",
+ "../../system_wrappers:system_wrappers",
+ ]
+
+ 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_static_library("video_coding") {
visibility = [ "*" ]
deps = []
@@ -19,8 +47,6 @@
"decoder_database.h",
"decoding_state.cc",
"decoding_state.h",
- "encoded_frame.cc",
- "encoded_frame.h",
"encoder_database.cc",
"encoder_database.h",
"fec_controller_default.cc",
@@ -110,6 +136,7 @@
deps += [
":codec_globals_headers",
+ ":encoded_frame",
":video_codec_interface",
":video_coding_utility",
":webrtc_h264",
@@ -118,6 +145,7 @@
"..:module_api_public",
"../..:webrtc_common",
"../../:typedefs",
+ "../../api:encoded_frame_api",
"../../api:fec_controller_api",
"../../api:optional",
"../../api:video_frame_api",
@@ -715,6 +743,7 @@
sources += [ "codecs/h264/h264_encoder_impl_unittest.cc" ]
}
deps = [
+ ":encoded_frame",
":mock_headers",
":simulcast_test_utility",
":video_codec_interface",
diff --git a/modules/video_coding/encoded_frame.cc b/modules/video_coding/encoded_frame.cc
index 9950012..e390557 100644
--- a/modules/video_coding/encoded_frame.cc
+++ b/modules/video_coding/encoded_frame.cc
@@ -8,10 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "modules/video_coding/include/video_coding_defines.h"
#include "modules/video_coding/encoded_frame.h"
-#include "modules/video_coding/generic_encoder.h"
-#include "modules/video_coding/jitter_buffer_common.h"
namespace webrtc {
diff --git a/modules/video_coding/frame_object.cc b/modules/video_coding/frame_object.cc
index 6a31cfd..3bb5283 100644
--- a/modules/video_coding/frame_object.cc
+++ b/modules/video_coding/frame_object.cc
@@ -17,13 +17,6 @@
namespace webrtc {
namespace video_coding {
-FrameObject::FrameObject()
- : picture_id(0),
- spatial_layer(0),
- timestamp(0),
- num_references(0),
- inter_layer_predicted(false) {}
-
RtpFrameObject::RtpFrameObject(PacketBuffer* packet_buffer,
uint16_t first_seq_num,
uint16_t last_seq_num,
diff --git a/modules/video_coding/frame_object.h b/modules/video_coding/frame_object.h
index 6f31c1a..72b719c 100644
--- a/modules/video_coding/frame_object.h
+++ b/modules/video_coding/frame_object.h
@@ -12,54 +12,13 @@
#define MODULES_VIDEO_CODING_FRAME_OBJECT_H_
#include "api/optional.h"
+#include "api/video/encoded_frame.h"
#include "common_types.h" // NOLINT(build/include)
#include "modules/include/module_common_types.h"
-#include "modules/video_coding/encoded_frame.h"
namespace webrtc {
namespace video_coding {
-class FrameObject : public webrtc::VCMEncodedFrame {
- public:
- static const uint8_t kMaxFrameReferences = 5;
-
- FrameObject();
- virtual ~FrameObject() {}
-
- virtual bool GetBitstream(uint8_t* destination) const = 0;
-
- // The capture timestamp of this frame.
- virtual uint32_t Timestamp() const = 0;
-
- // When this frame was received.
- virtual int64_t ReceivedTime() const = 0;
-
- // When this frame should be rendered.
- virtual int64_t RenderTime() const = 0;
-
- // This information is currently needed by the timing calculation class.
- // TODO(philipel): Remove this function when a new timing class has
- // been implemented.
- virtual bool delayed_by_retransmission() const { return 0; }
-
- size_t size() const { return _length; }
-
- bool is_keyframe() const { return num_references == 0; }
-
- // The tuple (|picture_id|, |spatial_layer|) uniquely identifies a frame
- // object. For codec types that don't necessarily have picture ids they
- // have to be constructed from the header data relevant to that codec.
- int64_t picture_id;
- uint8_t spatial_layer;
- uint32_t timestamp;
-
- // TODO(philipel): Add simple modify/access functions to prevent adding too
- // many |references|.
- size_t num_references;
- int64_t references[kMaxFrameReferences];
- bool inter_layer_predicted;
-};
-
class PacketBuffer;
class RtpFrameObject : public FrameObject {