Remove corevideoframebuffer target.
This target is deprecated and downstream projects have been updated.
This CL replaces https://webrtc-review.googlesource.com/c/src/+/46521
Bug: webrtc:8470
Change-Id: Icf4696c946fd0a1aeeb687c4960586ba0cc52dc0
Reviewed-on: https://webrtc-review.googlesource.com/48362
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21908}
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 0e26a4a..2f5a666 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -307,7 +307,6 @@
deps = [
":common_objc",
- ":corevideoframebuffer_objc",
":peerconnectionfactory_objc",
":video_objc",
"../api:video_frame_api",
@@ -341,7 +340,6 @@
deps += [
":common_objc",
- ":corevideoframebuffer_objc",
":default_codec_factory_objc",
":native_api",
":native_video",
@@ -576,7 +574,6 @@
deps = [
":common_objc",
- ":corevideoframebuffer_objc",
":native_api",
":native_video",
":videotracksource_objc",
@@ -915,29 +912,6 @@
]
}
- rtc_static_library("corevideoframebuffer_objc") {
- sources = [
- "objc/Framework/Classes/Video/corevideo_frame_buffer.cc",
- "objc/Framework/Classes/Video/corevideo_frame_buffer.h",
- ]
-
- deps = [
- "../api:video_frame_api_i420",
- "../common_video",
- "../rtc_base:checks",
- "../rtc_base:rtc_base_approved",
- "//third_party/libyuv",
- ]
-
- 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" ]
- }
-
- libs = [ "CoreVideo.framework" ]
- }
-
rtc_static_library("video_toolbox_cc") {
visibility = [ ":videotoolbox_objc" ]
sources = [
diff --git a/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.cc b/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.cc
deleted file mode 100644
index 3ddaa71..0000000
--- a/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 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.
- */
-
-#include "sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
-
-#include "api/video/i420_buffer.h"
-#include "common_video/libyuv/include/webrtc_libyuv.h"
-#include "rtc_base/checks.h"
-#include "rtc_base/logging.h"
-#include "third_party/libyuv/include/libyuv/convert.h"
-
-namespace webrtc {
-
-CoreVideoFrameBuffer::CoreVideoFrameBuffer(CVPixelBufferRef pixel_buffer,
- int adapted_width,
- int adapted_height,
- int crop_width,
- int crop_height,
- int crop_x,
- int crop_y)
- : pixel_buffer_(pixel_buffer),
- width_(adapted_width),
- height_(adapted_height),
- buffer_width_(CVPixelBufferGetWidth(pixel_buffer)),
- buffer_height_(CVPixelBufferGetHeight(pixel_buffer)),
- crop_width_(crop_width),
- crop_height_(crop_height),
- // Can only crop at even pixels.
- crop_x_(crop_x & ~1),
- crop_y_(crop_y & ~1) {
- CVBufferRetain(pixel_buffer_);
-}
-
-CoreVideoFrameBuffer::CoreVideoFrameBuffer(CVPixelBufferRef pixel_buffer)
- : pixel_buffer_(pixel_buffer),
- width_(CVPixelBufferGetWidth(pixel_buffer)),
- height_(CVPixelBufferGetHeight(pixel_buffer)),
- buffer_width_(width_),
- buffer_height_(height_),
- crop_width_(width_),
- crop_height_(height_),
- crop_x_(0),
- crop_y_(0) {
- CVBufferRetain(pixel_buffer_);
-}
-
-CoreVideoFrameBuffer::~CoreVideoFrameBuffer() {
- CVBufferRelease(pixel_buffer_);
-}
-
-VideoFrameBuffer::Type CoreVideoFrameBuffer::type() const {
- return Type::kNative;
-}
-
-int CoreVideoFrameBuffer::width() const {
- return width_;
-}
-
-int CoreVideoFrameBuffer::height() const {
- return height_;
-}
-
-rtc::scoped_refptr<I420BufferInterface> CoreVideoFrameBuffer::ToI420() {
- const OSType pixel_format = CVPixelBufferGetPixelFormatType(pixel_buffer_);
- RTC_DCHECK(pixel_format == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange ||
- pixel_format == kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange);
-
- CVPixelBufferLockBaseAddress(pixel_buffer_, kCVPixelBufferLock_ReadOnly);
- const uint8_t* src_y = static_cast<const uint8_t*>(
- CVPixelBufferGetBaseAddressOfPlane(pixel_buffer_, 0));
- const int src_y_stride = CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer_, 0);
- const uint8_t* src_uv = static_cast<const uint8_t*>(
- CVPixelBufferGetBaseAddressOfPlane(pixel_buffer_, 1));
- const int src_uv_stride =
- CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer_, 1);
-
- // Crop just by modifying pointers.
- src_y += src_y_stride * crop_y_ + crop_x_;
- src_uv += src_uv_stride * (crop_y_ / 2) + crop_x_;
-
- // TODO(magjed): Use a frame buffer pool.
- NV12ToI420Scaler nv12_to_i420_scaler;
- rtc::scoped_refptr<I420Buffer> buffer =
- new rtc::RefCountedObject<I420Buffer>(width_, height_);
- nv12_to_i420_scaler.NV12ToI420Scale(
- src_y, src_y_stride,
- src_uv, src_uv_stride,
- crop_width_, crop_height_,
- buffer->MutableDataY(), buffer->StrideY(),
- buffer->MutableDataU(), buffer->StrideU(),
- buffer->MutableDataV(), buffer->StrideV(),
- buffer->width(), buffer->height());
-
- CVPixelBufferUnlockBaseAddress(pixel_buffer_, kCVPixelBufferLock_ReadOnly);
-
- return buffer;
-}
-
-bool CoreVideoFrameBuffer::RequiresCropping() const {
- return crop_width_ != buffer_width_ || crop_height_ != buffer_height_;
-}
-
-bool CoreVideoFrameBuffer::CropAndScaleTo(
- std::vector<uint8_t>* tmp_buffer,
- CVPixelBufferRef output_pixel_buffer) const {
- // Prepare output pointers.
- RTC_DCHECK_EQ(CVPixelBufferGetPixelFormatType(output_pixel_buffer),
- kCVPixelFormatType_420YpCbCr8BiPlanarFullRange);
- CVReturn cv_ret = CVPixelBufferLockBaseAddress(output_pixel_buffer, 0);
- if (cv_ret != kCVReturnSuccess) {
- RTC_LOG(LS_ERROR) << "Failed to lock base address: " << cv_ret;
- return false;
- }
- const int dst_width = CVPixelBufferGetWidth(output_pixel_buffer);
- const int dst_height = CVPixelBufferGetHeight(output_pixel_buffer);
- uint8_t* dst_y = reinterpret_cast<uint8_t*>(
- CVPixelBufferGetBaseAddressOfPlane(output_pixel_buffer, 0));
- const int dst_y_stride =
- CVPixelBufferGetBytesPerRowOfPlane(output_pixel_buffer, 0);
- uint8_t* dst_uv = reinterpret_cast<uint8_t*>(
- CVPixelBufferGetBaseAddressOfPlane(output_pixel_buffer, 1));
- const int dst_uv_stride =
- CVPixelBufferGetBytesPerRowOfPlane(output_pixel_buffer, 1);
-
- // Prepare source pointers.
- const OSType src_pixel_format =
- CVPixelBufferGetPixelFormatType(pixel_buffer_);
- RTC_DCHECK(
- src_pixel_format == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange ||
- src_pixel_format == kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange);
- CVPixelBufferLockBaseAddress(pixel_buffer_, kCVPixelBufferLock_ReadOnly);
- const uint8_t* src_y = static_cast<const uint8_t*>(
- CVPixelBufferGetBaseAddressOfPlane(pixel_buffer_, 0));
- const int src_y_stride = CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer_, 0);
- const uint8_t* src_uv = static_cast<const uint8_t*>(
- CVPixelBufferGetBaseAddressOfPlane(pixel_buffer_, 1));
- const int src_uv_stride =
- CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer_, 1);
-
- // Crop just by modifying pointers.
- src_y += src_y_stride * crop_y_ + crop_x_;
- src_uv += src_uv_stride * (crop_y_ / 2) + crop_x_;
-
- if (crop_width_ == dst_width && crop_height_ == dst_height) {
- tmp_buffer->clear();
- tmp_buffer->shrink_to_fit();
- } else {
- const int src_chroma_width = (crop_width_ + 1) / 2;
- const int src_chroma_height = (crop_height_ + 1) / 2;
- const int dst_chroma_width = (dst_width + 1) / 2;
- const int dst_chroma_height = (dst_height + 1) / 2;
- tmp_buffer->resize(src_chroma_width * src_chroma_height * 2 +
- dst_chroma_width * dst_chroma_height * 2);
- tmp_buffer->shrink_to_fit();
- }
-
- NV12Scale(tmp_buffer->data(),
- src_y, src_y_stride,
- src_uv, src_uv_stride,
- crop_width_, crop_height_,
- dst_y, dst_y_stride,
- dst_uv, dst_uv_stride,
- dst_width, dst_height);
-
- CVPixelBufferUnlockBaseAddress(pixel_buffer_, kCVPixelBufferLock_ReadOnly);
- CVPixelBufferUnlockBaseAddress(output_pixel_buffer, 0);
-
- return true;
-}
-
-} // namespace webrtc
diff --git a/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h b/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h
deleted file mode 100644
index f0b094b..0000000
--- a/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 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 SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_COREVIDEO_FRAME_BUFFER_H_
-#define SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_COREVIDEO_FRAME_BUFFER_H_
-
-#include <CoreVideo/CoreVideo.h>
-
-#include <vector>
-
-#include "common_video/include/video_frame_buffer.h"
-
-namespace webrtc {
-
-class CoreVideoFrameBuffer : public VideoFrameBuffer {
- public:
- explicit CoreVideoFrameBuffer(CVPixelBufferRef pixel_buffer);
- CoreVideoFrameBuffer(CVPixelBufferRef pixel_buffer,
- int adapted_width,
- int adapted_height,
- int crop_width,
- int crop_height,
- int crop_x,
- int crop_y);
- ~CoreVideoFrameBuffer() override;
-
- CVPixelBufferRef pixel_buffer() { return pixel_buffer_; }
-
- // Returns true if the internal pixel buffer needs to be cropped.
- bool RequiresCropping() const;
- // Crop and scales the internal pixel buffer to the output pixel buffer. The
- // tmp buffer is used for intermediary splitting the UV channels. This
- // function returns true if successful.
- bool CropAndScaleTo(std::vector<uint8_t>* tmp_buffer,
- CVPixelBufferRef output_pixel_buffer) const;
-
- private:
- Type type() const override;
- int width() const override;
- int height() const override;
- rtc::scoped_refptr<I420BufferInterface> ToI420() override;
-
- CVPixelBufferRef pixel_buffer_;
- // buffer_width/height is the actual pixel buffer resolution. The
- // width_/height_ is the resolution we will scale to in ToI420(). Cropping
- // happens before scaling, so: buffer_width >= crop_width >= width().
- const int width_;
- const int height_;
- const int buffer_width_;
- const int buffer_height_;
- const int crop_width_;
- const int crop_height_;
- const int crop_x_;
- const int crop_y_;
-};
-
-} // namespace webrtc
-
-#endif // SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_COREVIDEO_FRAME_BUFFER_H_