Move EncodedImage class to api/video/

Bug: webrtc:9378
Change-Id: I8fb3b19cad0ad428abc6c8e6b507180d461882ba
Reviewed-on: https://webrtc-review.googlesource.com/c/104002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25033}
This commit is contained in:
Niels Möller 2018-10-05 14:17:58 +02:00 committed by Commit Bot
parent 38537edf59
commit 4dc66c53d0
33 changed files with 142 additions and 114 deletions

View file

@ -1,6 +1,5 @@
include_rules = [
"+third_party/libyuv",
"+common_video",
"+media",
"+p2p",
"+pc",

View file

@ -66,6 +66,20 @@ rtc_source_set("video_frame_i010") {
]
}
rtc_source_set("encoded_image") {
sources = [
"encoded_image.cc",
"encoded_image.h",
]
deps = [
":video_frame",
"../..:webrtc_common",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("encoded_frame") {
visibility = [ "*" ]
sources = [

View file

@ -8,7 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include "common_video/include/video_frame.h"
#include "api/video/encoded_image.h"
#include <string.h>

97
api/video/encoded_image.h Normal file
View file

@ -0,0 +1,97 @@
/*
* 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.
*/
#ifndef API_VIDEO_ENCODED_IMAGE_H_
#define API_VIDEO_ENCODED_IMAGE_H_
#include "absl/types/optional.h"
#include "api/video/video_content_type.h"
#include "api/video/video_rotation.h"
#include "api/video/video_timing.h"
#include "common_types.h" // NOLINT(build/include)
namespace webrtc {
// TODO(bug.webrtc.org/9378): This is a legacy api class, which is slowly being
// cleaned up. Direct use of its members is strongly discouraged.
class EncodedImage {
public:
static const size_t kBufferPaddingBytesH264;
// Some decoders require encoded image buffers to be padded with a small
// number of additional bytes (due to over-reading byte readers).
static size_t GetBufferPaddingBytes(VideoCodecType codec_type);
EncodedImage();
EncodedImage(const EncodedImage&);
EncodedImage(uint8_t* buffer, size_t length, size_t size);
// TODO(nisse): Change style to timestamp(), set_timestamp(), for consistency
// with the VideoFrame class.
// Set frame timestamp (90kHz).
void SetTimestamp(uint32_t timestamp) { timestamp_rtp_ = timestamp; }
// Get frame timestamp (90kHz).
uint32_t Timestamp() const { return timestamp_rtp_; }
void SetEncodeTime(int64_t encode_start_ms, int64_t encode_finish_ms);
absl::optional<int> SpatialIndex() const {
if (spatial_index_ < 0)
return absl::nullopt;
return spatial_index_;
}
void SetSpatialIndex(absl::optional<int> spatial_index) {
RTC_DCHECK_GE(spatial_index.value_or(0), 0);
RTC_DCHECK_LT(spatial_index.value_or(0), kMaxSpatialLayers);
spatial_index_ = spatial_index.value_or(-1);
}
uint32_t _encodedWidth = 0;
uint32_t _encodedHeight = 0;
// NTP time of the capture time in local timebase in milliseconds.
int64_t ntp_time_ms_ = 0;
int64_t capture_time_ms_ = 0;
FrameType _frameType = kVideoFrameDelta;
uint8_t* _buffer;
size_t _length;
size_t _size;
VideoRotation rotation_ = kVideoRotation_0;
VideoContentType content_type_ = VideoContentType::UNSPECIFIED;
bool _completeFrame = false;
int qp_ = -1; // Quantizer value.
// When an application indicates non-zero values here, it is taken as an
// indication that all future frames will be constrained with those limits
// until the application indicates a change again.
PlayoutDelay playout_delay_ = {-1, -1};
struct Timing {
uint8_t flags = VideoSendTiming::kInvalid;
int64_t encode_start_ms = 0;
int64_t encode_finish_ms = 0;
int64_t packetization_finish_ms = 0;
int64_t pacer_exit_ms = 0;
int64_t network_timestamp_ms = 0;
int64_t network2_timestamp_ms = 0;
int64_t receive_start_ms = 0;
int64_t receive_finish_ms = 0;
} timing_;
private:
uint32_t timestamp_rtp_ = 0;
// -1 means not set. Use a plain int rather than optional, to keep this class
// copyable with memcpy.
int spatial_index_ = -1;
};
} // namespace webrtc
#endif // API_VIDEO_ENCODED_IMAGE_H_

View file

@ -32,9 +32,9 @@ rtc_source_set("video_codecs_api") {
deps = [
"../..:webrtc_common",
"../../common_video",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"../video:encoded_image",
"../video:video_bitrate_allocation",
"../video:video_frame",
"//third_party/abseil-cpp/absl/types:optional",

View file

@ -15,9 +15,9 @@
#include <string>
#include <vector>
#include "api/video/encoded_image.h"
#include "api/video/video_frame.h"
#include "api/video_codecs/video_codec.h"
#include "common_video/include/video_frame.h"
namespace webrtc {

View file

@ -16,10 +16,10 @@
#include <vector>
#include "absl/types/optional.h"
#include "api/video/encoded_image.h"
#include "api/video/video_bitrate_allocation.h"
#include "api/video/video_frame.h"
#include "api/video_codecs/video_codec.h"
#include "common_video/include/video_frame.h"
#include "rtc_base/checks.h"
namespace webrtc {

View file

@ -34,7 +34,6 @@ rtc_static_library("common_video") {
"incoming_video_stream.cc",
"libyuv/include/webrtc_libyuv.h",
"libyuv/webrtc_libyuv.cc",
"video_frame.cc",
"video_frame_buffer.cc",
"video_render_frames.cc",
"video_render_frames.h",
@ -42,6 +41,7 @@ rtc_static_library("common_video") {
deps = [
"..:webrtc_common",
"../api/video:encoded_image",
"../api/video:video_bitrate_allocation",
"../api/video:video_bitrate_allocator",
"../api/video:video_frame",

View file

@ -11,91 +11,7 @@
#ifndef COMMON_VIDEO_INCLUDE_VIDEO_FRAME_H_
#define COMMON_VIDEO_INCLUDE_VIDEO_FRAME_H_
// TODO(nisse): This header file should eventually be deleted. The
// EncodedImage class stays in this file until we have figured out how
// to refactor and clean up related interfaces, at which point it
// should be moved to somewhere under api/.
#include "absl/types/optional.h"
#include "api/video/video_content_type.h"
#include "api/video/video_rotation.h"
#include "api/video/video_timing.h"
#include "common_types.h" // NOLINT(build/include)
namespace webrtc {
// TODO(pbos): Rename EncodedFrame and reformat this class' members.
class EncodedImage {
public:
static const size_t kBufferPaddingBytesH264;
// Some decoders require encoded image buffers to be padded with a small
// number of additional bytes (due to over-reading byte readers).
static size_t GetBufferPaddingBytes(VideoCodecType codec_type);
EncodedImage();
EncodedImage(const EncodedImage&);
EncodedImage(uint8_t* buffer, size_t length, size_t size);
// TODO(nisse): Change style to timestamp(), set_timestamp(), for consistency
// with the VideoFrame class.
// Set frame timestamp (90kHz).
void SetTimestamp(uint32_t timestamp) { timestamp_rtp_ = timestamp; }
// Get frame timestamp (90kHz).
uint32_t Timestamp() const { return timestamp_rtp_; }
void SetEncodeTime(int64_t encode_start_ms, int64_t encode_finish_ms);
absl::optional<int> SpatialIndex() const {
if (spatial_index_ < 0)
return absl::nullopt;
return spatial_index_;
}
void SetSpatialIndex(absl::optional<int> spatial_index) {
RTC_DCHECK_GE(spatial_index.value_or(0), 0);
RTC_DCHECK_LT(spatial_index.value_or(0), kMaxSpatialLayers);
spatial_index_ = spatial_index.value_or(-1);
}
uint32_t _encodedWidth = 0;
uint32_t _encodedHeight = 0;
// NTP time of the capture time in local timebase in milliseconds.
int64_t ntp_time_ms_ = 0;
int64_t capture_time_ms_ = 0;
FrameType _frameType = kVideoFrameDelta;
uint8_t* _buffer;
size_t _length;
size_t _size;
VideoRotation rotation_ = kVideoRotation_0;
VideoContentType content_type_ = VideoContentType::UNSPECIFIED;
bool _completeFrame = false;
int qp_ = -1; // Quantizer value.
// When an application indicates non-zero values here, it is taken as an
// indication that all future frames will be constrained with those limits
// until the application indicates a change again.
PlayoutDelay playout_delay_ = {-1, -1};
struct Timing {
uint8_t flags = VideoSendTiming::kInvalid;
int64_t encode_start_ms = 0;
int64_t encode_finish_ms = 0;
int64_t packetization_finish_ms = 0;
int64_t pacer_exit_ms = 0;
int64_t network_timestamp_ms = 0;
int64_t network2_timestamp_ms = 0;
int64_t receive_start_ms = 0;
int64_t receive_finish_ms = 0;
} timing_;
private:
uint32_t timestamp_rtp_ = 0;
// -1 means not set. Use a plain int rather than optional, to keep this class
// copyable with memcpy.
int spatial_index_ = -1;
};
} // namespace webrtc
// TODO(nisse): Delete this file, after downstream code is updated.
#include "api/video/encoded_image.h"
#endif // COMMON_VIDEO_INCLUDE_VIDEO_FRAME_H_

View file

@ -17,8 +17,8 @@ rtc_static_library("encoded_frame") {
deps = [
":video_codec_interface",
"../../:webrtc_common",
"../../api/video:encoded_image",
"../../api/video:video_frame_i420",
"../../common_video:common_video",
"../../modules:module_api",
"../../modules:module_api_public",
"../../modules/video_coding:video_coding_utility",
@ -261,6 +261,7 @@ rtc_source_set("video_coding_utility") {
":video_codec_interface",
"..:module_api",
"../..:webrtc_common",
"../../api/video:encoded_image",
"../../api/video:video_bitrate_allocator",
"../../api/video_codecs:video_codecs_api",
"../../common_video",
@ -376,6 +377,7 @@ rtc_static_library("webrtc_multiplex") {
":video_coding_utility",
"..:module_api",
"../..:webrtc_common",
"../../api/video:encoded_image",
"../../api/video:video_frame",
"../../api/video:video_frame_i420",
"../../api/video_codecs:video_codecs_api",
@ -420,6 +422,7 @@ rtc_static_library("webrtc_vp8") {
":video_coding_utility",
"..:module_api",
"../..:webrtc_common",
"../../api/video:encoded_image",
"../../api/video:video_frame",
"../../api/video_codecs:video_codecs_api",
"../../common_video",
@ -575,6 +578,7 @@ if (rtc_include_tests) {
":video_coding_utility",
"../../:webrtc_common",
"../../api:simulcast_test_fixture_api",
"../../api/video:encoded_image",
"../../api/video:video_frame",
"../../api/video:video_frame_i420",
"../../api/video_codecs:video_codecs_api",

View file

@ -10,9 +10,9 @@
#include "modules/video_coding/codecs/multiplex/include/multiplex_decoder_adapter.h"
#include "api/video/encoded_image.h"
#include "api/video/i420_buffer.h"
#include "api/video/video_frame_buffer.h"
#include "common_video/include/video_frame.h"
#include "common_video/include/video_frame_buffer.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/video_coding/codecs/multiplex/include/augmented_video_frame_buffer.h"

View file

@ -14,8 +14,8 @@
#include <memory>
#include <vector>
#include "api/video/encoded_image.h"
#include "common_types.h" // NOLINT(build/include)
#include "common_video/include/video_frame.h"
namespace webrtc {

View file

@ -12,7 +12,7 @@
#include <cstring>
#include "common_video/include/video_frame.h"
#include "api/video/encoded_image.h"
#include "common_video/include/video_frame_buffer.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/include/module_common_types.h"

View file

@ -12,7 +12,6 @@
#include <string>
#include "absl/memory/memory.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/video_coding/codecs/vp8/libvpx_vp8_decoder.h"
#include "rtc_base/checks.h"
#include "rtc_base/numerics/exp_filter.h"

View file

@ -13,10 +13,10 @@
#include <memory>
#include "api/video/encoded_image.h"
#include "api/video_codecs/video_decoder.h"
#include "common_types.h" // NOLINT(build/include)
#include "common_video/include/i420_buffer_pool.h"
#include "common_video/include/video_frame.h"
#include "modules/include/module_common_types.h"
#include "modules/video_coding/codecs/vp8/include/vp8.h"
#include "modules/video_coding/include/video_codec_interface.h"

View file

@ -14,10 +14,10 @@
#include <memory>
#include <vector>
#include "api/video/encoded_image.h"
#include "api/video/video_frame.h"
#include "api/video_codecs/video_encoder.h"
#include "common_types.h" // NOLINT(build/include)
#include "common_video/include/video_frame.h"
#include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h"
#include "modules/video_coding/codecs/vp8/include/vp8.h"
#include "modules/video_coding/codecs/vp8/include/vp8_temporal_layers.h"

View file

@ -13,8 +13,8 @@
#include <vector>
#include "api/video/encoded_image.h"
#include "common_types.h" // NOLINT(build/include)
#include "common_video/include/video_frame.h"
#include "modules/include/module_common_types.h"
#include "modules/video_coding/include/video_codec_interface.h"
#include "modules/video_coding/include/video_coding_defines.h"

View file

@ -15,8 +15,6 @@
#include <vector>
#include "api/video/video_frame.h"
// For EncodedImage
#include "common_video/include/video_frame.h"
#include "modules/include/module_common_types.h"
namespace webrtc {

View file

@ -14,7 +14,7 @@
#include <memory>
#include <string>
#include "common_video/include/video_frame.h"
#include "api/video/encoded_image.h"
#include "modules/include/module_common_types.h"
#include "rtc_base/constructormagic.h"
#include "rtc_base/file.h"

View file

@ -15,8 +15,8 @@
#include <memory>
#include <vector>
#include "api/video/encoded_image.h"
#include "api/video_codecs/sdp_video_format.h"
#include "common_video/include/video_frame.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/video_coding/include/video_coding_defines.h"
#include "rtc_base/checks.h"

View file

@ -756,8 +756,8 @@ if (is_ios || is_mac) {
deps = [
":base_objc",
":helpers_objc",
"../api/video:encoded_image",
"../api/video_codecs:video_codecs_api",
"../common_video",
"../modules:module_api",
"../modules/video_coding:video_codec_interface",
"../rtc_base:rtc_base",

View file

@ -570,6 +570,7 @@ if (is_android) {
":vp9_jni", # TODO(bugs.webrtc.org/7925): Remove.
"../..:webrtc_common",
"../../api:libjingle_peerconnection_api",
"../../api/video:encoded_image",
"../../api/video:video_frame",
"../../api/video_codecs:builtin_video_decoder_factory",
"../../api/video_codecs:builtin_video_encoder_factory",

View file

@ -10,7 +10,7 @@
#include "sdk/android/src/jni/encodedimage.h"
#include "common_video/include/video_frame.h"
#include "api/video/encoded_image.h"
#include "rtc_base/timeutils.h"
#include "sdk/android/generated_video_jni/jni/EncodedImage_jni.h"
#include "sdk/android/native_api/jni/java_types.h"

View file

@ -10,7 +10,7 @@
#import "base/RTCEncodedImage.h"
#include "common_video/include/video_frame.h"
#include "api/video/encoded_image.h"
NS_ASSUME_NONNULL_BEGIN

View file

@ -532,6 +532,7 @@ rtc_source_set("fake_video_codecs") {
}
deps = [
"..:webrtc_common",
"../api/video:encoded_image",
"../api/video:video_frame_i420",
"../api/video_codecs:video_codecs_api",
"../common_video:common_video",

View file

@ -12,7 +12,7 @@
#include <string.h>
#include "common_video/include/video_frame.h"
#include "api/video/encoded_image.h"
#include "modules/video_coding/include/video_codec_interface.h"
#include "rtc_base/checks.h"

View file

@ -152,6 +152,7 @@ rtc_source_set("video_stream_encoder_impl") {
}
deps = [
"../api/video:encoded_image",
"../api/video:video_bitrate_allocator",
"../api/video:video_frame",
"../api/video:video_frame_i420",
@ -425,6 +426,7 @@ if (rtc_include_tests) {
":video_mocks",
":video_stream_encoder_impl",
"../api:simulated_network_api",
"../api/video:encoded_image",
"../api/video:video_frame",
"../api/video:video_frame_i420",
"../api/video_codecs:video_codecs_api",

View file

@ -10,8 +10,8 @@
#include <memory>
#include "api/video/encoded_image.h"
#include "api/video/i420_buffer.h"
#include "common_video/include/video_frame.h"
#include "modules/video_coding/utility/quality_scaler.h"
#include "rtc_base/event.h"
#include "rtc_base/fakeclock.h"

View file

@ -19,7 +19,6 @@
#include "absl/types/optional.h"
#include "call/video_receive_stream.h"
#include "common_types.h" // NOLINT(build/include)
#include "common_video/include/frame_callback.h"
#include "modules/video_coding/include/video_coding_defines.h"
#include "rtc_base/criticalsection.h"
#include "rtc_base/numerics/histogram_percentile_counter.h"

View file

@ -17,7 +17,6 @@
#include "call/rtp_packet_sink_interface.h"
#include "call/syncable.h"
#include "call/video_receive_stream.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "modules/rtp_rtcp/include/flexfec_receiver.h"
#include "modules/video_coding/frame_buffer2.h"
#include "modules/video_coding/video_coding_impl.h"

View file

@ -20,7 +20,6 @@
#include "call/bitrate_allocator.h"
#include "call/video_receive_stream.h"
#include "call/video_send_stream.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "rtc_base/criticalsection.h"
#include "rtc_base/event.h"
#include "rtc_base/task_queue.h"

View file

@ -12,12 +12,12 @@
#include <vector>
#include "api/test/simulated_network.h"
#include "api/video/encoded_image.h"
#include "call/call.h"
#include "call/fake_network_pipe.h"
#include "call/rtp_transport_controller_send.h"
#include "call/simulated_network.h"
#include "common_video/include/frame_callback.h"
#include "common_video/include/video_frame.h"
#include "modules/rtp_rtcp/include/rtp_header_parser.h"
#include "modules/rtp_rtcp/include/rtp_rtcp.h"
#include "modules/rtp_rtcp/source/rtcp_sender.h"

View file

@ -15,8 +15,8 @@
#include <numeric>
#include <utility>
#include "api/video/encoded_image.h"
#include "api/video/i420_buffer.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"
#include "rtc_base/arraysize.h"