diff --git a/api/video/i010_buffer.cc b/api/video/i010_buffer.cc index 7286676ded..8f4541f2ec 100644 --- a/api/video/i010_buffer.cc +++ b/api/video/i010_buffer.cc @@ -243,10 +243,8 @@ void I010Buffer::PasteFrom(const I010BufferInterface& picture, // Pasted picture has to be aligned so subsumpled UV plane isn't corrupted. RTC_CHECK(offset_col % 2 == 0); RTC_CHECK(offset_row % 2 == 0); - RTC_CHECK(picture.width() % 2 == 0 || - picture.width() + offset_col == width()); - RTC_CHECK(picture.height() % 2 == 0 || - picture.height() + offset_row == height()); + RTC_CHECK(picture.width() % 2 == 0); + RTC_CHECK(picture.height() % 2 == 0); libyuv::CopyPlane_16(picture.DataY(), picture.StrideY(), MutableDataY() + StrideY() * offset_row + offset_col, diff --git a/api/video/i420_buffer.cc b/api/video/i420_buffer.cc index 46de581e84..ed45b98ae2 100644 --- a/api/video/i420_buffer.cc +++ b/api/video/i420_buffer.cc @@ -237,10 +237,8 @@ void I420Buffer::PasteFrom(const I420BufferInterface& picture, // Pasted picture has to be aligned so subsumpled UV plane isn't corrupted. RTC_CHECK(offset_col % 2 == 0); RTC_CHECK(offset_row % 2 == 0); - RTC_CHECK(picture.width() % 2 == 0 || - picture.width() + offset_col == width()); - RTC_CHECK(picture.height() % 2 == 0 || - picture.height() + offset_row == height()); + RTC_CHECK(picture.width() % 2 == 0); + RTC_CHECK(picture.height() % 2 == 0); libyuv::CopyPlane(picture.DataY(), picture.StrideY(), MutableDataY() + StrideY() * offset_row + offset_col, diff --git a/api/video/video_frame.cc b/api/video/video_frame.cc index 03bbd71c42..75a30b28a9 100644 --- a/api/video/video_frame.cc +++ b/api/video/video_frame.cc @@ -21,9 +21,7 @@ VideoFrame::Builder::~Builder() = default; VideoFrame VideoFrame::Builder::build() { return VideoFrame(id_, video_frame_buffer_, timestamp_us_, timestamp_rtp_, - ntp_time_ms_, rotation_, color_space_, - partial_frame_description_, - cache_buffer_for_partial_updates_); + ntp_time_ms_, rotation_, color_space_); } VideoFrame::Builder& VideoFrame::Builder::set_video_frame_buffer( @@ -78,18 +76,6 @@ VideoFrame::Builder& VideoFrame::Builder::set_id(uint16_t id) { return *this; } -VideoFrame::Builder& VideoFrame::Builder::set_partial_frame_description( - const absl::optional& description) { - partial_frame_description_ = description; - return *this; -} - -VideoFrame::Builder& VideoFrame::Builder::set_cache_buffer_for_partial_updates( - bool cache_buffer_for_partial_updates) { - cache_buffer_for_partial_updates_ = cache_buffer_for_partial_updates; - return *this; -} - VideoFrame::VideoFrame(const rtc::scoped_refptr& buffer, webrtc::VideoRotation rotation, int64_t timestamp_us) @@ -111,25 +97,20 @@ VideoFrame::VideoFrame(const rtc::scoped_refptr& buffer, RTC_DCHECK(buffer); } -VideoFrame::VideoFrame( - uint16_t id, - const rtc::scoped_refptr& buffer, - int64_t timestamp_us, - uint32_t timestamp_rtp, - int64_t ntp_time_ms, - VideoRotation rotation, - const absl::optional& color_space, - const absl::optional partial_frame_description, - bool cache_buffer_for_partial_updates) +VideoFrame::VideoFrame(uint16_t id, + const rtc::scoped_refptr& buffer, + int64_t timestamp_us, + uint32_t timestamp_rtp, + int64_t ntp_time_ms, + VideoRotation rotation, + const absl::optional& color_space) : id_(id), video_frame_buffer_(buffer), timestamp_rtp_(timestamp_rtp), ntp_time_ms_(ntp_time_ms), timestamp_us_(timestamp_us), rotation_(rotation), - color_space_(color_space), - partial_frame_description_(partial_frame_description), - cache_buffer_for_partial_updates_(cache_buffer_for_partial_updates) {} + color_space_(color_space) {} VideoFrame::~VideoFrame() = default; @@ -154,12 +135,6 @@ rtc::scoped_refptr VideoFrame::video_frame_buffer() const { return video_frame_buffer_; } -void VideoFrame::set_video_frame_buffer( - rtc::scoped_refptr buffer) { - RTC_CHECK(buffer.get()); - video_frame_buffer_ = buffer; -} - int64_t VideoFrame::render_time_ms() const { return timestamp_us() / rtc::kNumMicrosecsPerMillisec; } diff --git a/api/video/video_frame.h b/api/video/video_frame.h index de03d917ad..de3f0efdc5 100644 --- a/api/video/video_frame.h +++ b/api/video/video_frame.h @@ -25,14 +25,6 @@ namespace webrtc { class RTC_EXPORT VideoFrame { public: - // Describes a partial frame, which contains only a changed region compared - // to a previous frame. Shouldn't be set on the fully updated picture. - struct PartialFrameDescription { - // Coordinates of top-left corner of the changed region in the full picture. - int offset_x; - int offset_y; - }; - // Preferred way of building VideoFrame objects. class Builder { public: @@ -50,10 +42,6 @@ class RTC_EXPORT VideoFrame { Builder& set_color_space(const ColorSpace& color_space); Builder& set_color_space(const ColorSpace* color_space); Builder& set_id(uint16_t id); - Builder& set_partial_frame_description( - const absl::optional& description); - Builder& set_cache_buffer_for_partial_updates( - bool cache_buffer_for_partial_updates); private: uint16_t id_ = 0; @@ -63,8 +51,6 @@ class RTC_EXPORT VideoFrame { int64_t ntp_time_ms_ = 0; VideoRotation rotation_ = kVideoRotation_0; absl::optional color_space_; - absl::optional partial_frame_description_; - bool cache_buffer_for_partial_updates_; }; // To be deprecated. Migrate all use to Builder. @@ -148,31 +134,13 @@ class RTC_EXPORT VideoFrame { color_space ? absl::make_optional(*color_space) : absl::nullopt; } - const PartialFrameDescription* partial_frame_description() const { - return partial_frame_description_ ? &partial_frame_description_.value() - : nullptr; - } - void set_partial_frame_description( - const absl::optional& description) { - partial_frame_description_ = description; - } - - void set_cache_buffer_for_partial_updates( - bool cache_buffer_for_partial_updates) { - cache_buffer_for_partial_updates_ = cache_buffer_for_partial_updates; - } - bool cache_buffer_for_partial_updates() const { - return cache_buffer_for_partial_updates_; - } - // Get render time in milliseconds. // TODO(nisse): Deprecated. Migrate all users to timestamp_us(). int64_t render_time_ms() const; - // Return the underlying buffer. This can only be a nullptr for a partial - // update VideoFrame with no changed pixels. + // Return the underlying buffer. Never nullptr for a properly + // initialized VideoFrame. rtc::scoped_refptr video_frame_buffer() const; - void set_video_frame_buffer(rtc::scoped_refptr buffer); // TODO(nisse): Deprecated. // Return true if the frame is stored in a texture. @@ -181,16 +149,13 @@ class RTC_EXPORT VideoFrame { } private: - VideoFrame( - uint16_t id, - const rtc::scoped_refptr& buffer, - int64_t timestamp_us, - uint32_t timestamp_rtp, - int64_t ntp_time_ms, - VideoRotation rotation, - const absl::optional& color_space, - const absl::optional partial_frame_description, - bool cache_buffer_for_partial_updates_); + VideoFrame(uint16_t id, + const rtc::scoped_refptr& buffer, + int64_t timestamp_us, + uint32_t timestamp_rtp, + int64_t ntp_time_ms, + VideoRotation rotation, + const absl::optional& color_space); uint16_t id_; // An opaque reference counted handle that stores the pixel data. @@ -200,9 +165,6 @@ class RTC_EXPORT VideoFrame { int64_t timestamp_us_; VideoRotation rotation_; absl::optional color_space_; - absl::optional partial_frame_description_; - // Should be set on all frames, if the source may produce partial updates. - bool cache_buffer_for_partial_updates_; }; } // namespace webrtc diff --git a/api/video/video_source_interface.h b/api/video/video_source_interface.h index e589b7f36d..9d1641cd0d 100644 --- a/api/video/video_source_interface.h +++ b/api/video/video_source_interface.h @@ -42,9 +42,6 @@ struct RTC_EXPORT VideoSinkWants { absl::optional target_pixel_count; // Tells the source the maximum framerate the sink wants. int max_framerate_fps = std::numeric_limits::max(); - - // Tells the source that the sink supports partial frame updates. - bool partial_frames = false; }; template