Reland of "VideoFrameBuffer: Remove deprecated functions"
This reverts commit f1e34832b84798d7665d2aad9a5b3f33cbe5a274. Reason for reland: Chomium code has been updated. Original change's description: > Revert "VideoFrameBuffer: Remove deprecated functions" > > This reverts commit 428c9e218538278e6b0db42d1b734431bb432e1a. > > Reason for revert: Breaks Chromium WebRTC FYI on Mac Builder. http://build.chromium.org/p/chromium.webrtc.fyi/builders/Mac%20Builder/builds/25788 > > Original change's description: > > VideoFrameBuffer: Remove deprecated functions > > > > Bug: webrtc:7632 > > Change-Id: I06f97bacd51f94d1f90b5286cc39e06a1697bb9b > > Reviewed-on: https://chromium-review.googlesource.com/535479 > > Commit-Queue: Magnus Jedvert <magjed@webrtc.org> > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#18832} > > TBR=magjed@webrtc.org,nisse@webrtc.org > > Change-Id: I2e6617420746bba3e4637019d3bce03be12a4643 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:7632 > Reviewed-on: https://chromium-review.googlesource.com/555550 > Reviewed-by: Magnus Jedvert <magjed@webrtc.org> > Commit-Queue: Magnus Jedvert <magjed@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#18834} TBR=magjed@webrtc.org,nisse@webrtc.org Change-Id: I41c7b31ab52ba162fd0a9ab03a4b45aecb97cb09 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:7632 Reviewed-on: https://chromium-review.googlesource.com/558244 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#18867}
This commit is contained in:
committed by
Commit Bot
parent
e75d96b5bd
commit
224e65939a
@ -16,94 +16,15 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
namespace {
|
||||
|
||||
// TODO(magjed): Remove this class. It is only used for providing a default
|
||||
// implementation of ToI420() until external clients are updated. ToI420() will
|
||||
// then be made pure virtual. This adapter adapts a VideoFrameBuffer (which is
|
||||
// expected to be in I420 format) to I420BufferInterface. The reason this is
|
||||
// needed is because of the return type mismatch in NativeToI420Buffer (returns
|
||||
// VideoFrameBuffer) vs ToI420 (returns I420BufferInterface).
|
||||
class I420InterfaceAdapter : public I420BufferInterface {
|
||||
public:
|
||||
explicit I420InterfaceAdapter(const VideoFrameBuffer* buffer)
|
||||
: buffer_(buffer) {}
|
||||
|
||||
int width() const override { return buffer_->width(); }
|
||||
int height() const override { return buffer_->height(); }
|
||||
|
||||
const uint8_t* DataY() const override { return buffer_->DataY(); }
|
||||
const uint8_t* DataU() const override { return buffer_->DataU(); }
|
||||
const uint8_t* DataV() const override { return buffer_->DataV(); }
|
||||
|
||||
int StrideY() const override { return buffer_->StrideY(); }
|
||||
int StrideU() const override { return buffer_->StrideU(); }
|
||||
int StrideV() const override { return buffer_->StrideV(); }
|
||||
|
||||
private:
|
||||
rtc::scoped_refptr<const VideoFrameBuffer> buffer_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
// TODO(magjed): The default implementations in VideoFrameBuffer are provided in
|
||||
// order to support the deprecated interface until external clients are updated.
|
||||
// Remove once done.
|
||||
VideoFrameBuffer::Type VideoFrameBuffer::type() const {
|
||||
return native_handle() ? Type::kNative : Type::kI420;
|
||||
}
|
||||
|
||||
const uint8_t* VideoFrameBuffer::DataY() const {
|
||||
return GetI420()->DataY();
|
||||
}
|
||||
|
||||
const uint8_t* VideoFrameBuffer::DataU() const {
|
||||
return GetI420()->DataU();
|
||||
}
|
||||
|
||||
const uint8_t* VideoFrameBuffer::DataV() const {
|
||||
return GetI420()->DataV();
|
||||
}
|
||||
|
||||
// Returns the number of bytes between successive rows for a given plane.
|
||||
int VideoFrameBuffer::StrideY() const {
|
||||
return GetI420()->StrideY();
|
||||
}
|
||||
|
||||
int VideoFrameBuffer::StrideU() const {
|
||||
return GetI420()->StrideU();
|
||||
}
|
||||
|
||||
int VideoFrameBuffer::StrideV() const {
|
||||
return GetI420()->StrideV();
|
||||
}
|
||||
|
||||
void* VideoFrameBuffer::native_handle() const {
|
||||
RTC_DCHECK(type() != Type::kNative);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<VideoFrameBuffer> VideoFrameBuffer::NativeToI420Buffer() {
|
||||
return ToI420();
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<I420BufferInterface> VideoFrameBuffer::ToI420() {
|
||||
return new rtc::RefCountedObject<I420InterfaceAdapter>(NativeToI420Buffer());
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<I420BufferInterface> VideoFrameBuffer::GetI420() {
|
||||
RTC_CHECK(type() == Type::kI420);
|
||||
// TODO(magjed): static_cast to I420BufferInterface instead once external
|
||||
// clients are updated.
|
||||
return new rtc::RefCountedObject<I420InterfaceAdapter>(this);
|
||||
return static_cast<I420BufferInterface*>(this);
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<const I420BufferInterface> VideoFrameBuffer::GetI420()
|
||||
const {
|
||||
RTC_CHECK(type() == Type::kI420);
|
||||
// TODO(magjed): static_cast to I420BufferInterface instead once external
|
||||
// clients are updated.
|
||||
return new rtc::RefCountedObject<I420InterfaceAdapter>(this);
|
||||
return static_cast<const I420BufferInterface*>(this);
|
||||
}
|
||||
|
||||
I444BufferInterface* VideoFrameBuffer::GetI444() {
|
||||
|
||||
@ -48,7 +48,7 @@ class VideoFrameBuffer : public rtc::RefCountInterface {
|
||||
};
|
||||
|
||||
// This function specifies in what pixel format the data is stored in.
|
||||
virtual Type type() const;
|
||||
virtual Type type() const = 0;
|
||||
|
||||
// The resolution of the frame in pixels. For formats where some planes are
|
||||
// subsampled, this is the highest-resolution plane.
|
||||
@ -59,7 +59,7 @@ class VideoFrameBuffer : public rtc::RefCountInterface {
|
||||
// in another format, a conversion will take place. All implementations must
|
||||
// provide a fallback to I420 for compatibility with e.g. the internal WebRTC
|
||||
// software encoders.
|
||||
virtual rtc::scoped_refptr<I420BufferInterface> ToI420();
|
||||
virtual rtc::scoped_refptr<I420BufferInterface> ToI420() = 0;
|
||||
|
||||
// These functions should only be called if type() is of the correct type.
|
||||
// Calling with a different type will result in a crash.
|
||||
@ -70,26 +70,6 @@ class VideoFrameBuffer : public rtc::RefCountInterface {
|
||||
I444BufferInterface* GetI444();
|
||||
const I444BufferInterface* GetI444() const;
|
||||
|
||||
// Deprecated - use ToI420() first instead.
|
||||
// Returns pointer to the pixel data for a given plane. The memory is owned by
|
||||
// the VideoFrameBuffer object and must not be freed by the caller.
|
||||
virtual const uint8_t* DataY() const;
|
||||
virtual const uint8_t* DataU() const;
|
||||
virtual const uint8_t* DataV() const;
|
||||
// Returns the number of bytes between successive rows for a given plane.
|
||||
virtual int StrideY() const;
|
||||
virtual int StrideU() const;
|
||||
virtual int StrideV() const;
|
||||
|
||||
// Deprecated - use type() to determine if the stored data is kNative, and
|
||||
// then cast into the appropriate type.
|
||||
// Return the handle of the underlying video frame. This is used when the
|
||||
// frame is backed by a texture.
|
||||
virtual void* native_handle() const;
|
||||
|
||||
// Deprecated - use ToI420() instead.
|
||||
virtual rtc::scoped_refptr<VideoFrameBuffer> NativeToI420Buffer();
|
||||
|
||||
protected:
|
||||
~VideoFrameBuffer() override {}
|
||||
};
|
||||
@ -102,14 +82,14 @@ class PlanarYuvBuffer : public VideoFrameBuffer {
|
||||
|
||||
// Returns pointer to the pixel data for a given plane. The memory is owned by
|
||||
// the VideoFrameBuffer object and must not be freed by the caller.
|
||||
const uint8_t* DataY() const override = 0;
|
||||
const uint8_t* DataU() const override = 0;
|
||||
const uint8_t* DataV() const override = 0;
|
||||
virtual const uint8_t* DataY() const = 0;
|
||||
virtual const uint8_t* DataU() const = 0;
|
||||
virtual const uint8_t* DataV() const = 0;
|
||||
|
||||
// Returns the number of bytes between successive rows for a given plane.
|
||||
int StrideY() const override = 0;
|
||||
int StrideU() const override = 0;
|
||||
int StrideV() const override = 0;
|
||||
virtual int StrideY() const = 0;
|
||||
virtual int StrideU() const = 0;
|
||||
virtual int StrideV() const = 0;
|
||||
|
||||
protected:
|
||||
~PlanarYuvBuffer() override {}
|
||||
|
||||
@ -19,32 +19,6 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// Base class for native-handle buffer is a wrapper around a |native_handle|.
|
||||
// This is used for convenience as most native-handle implementations can share
|
||||
// many VideoFrame implementations, but need to implement a few others (such
|
||||
// as their own destructors or conversion methods back to software I420).
|
||||
class NativeHandleBuffer : public VideoFrameBuffer {
|
||||
public:
|
||||
NativeHandleBuffer(void* native_handle, int width, int height);
|
||||
|
||||
Type type() const override;
|
||||
int width() const override;
|
||||
int height() const override;
|
||||
const uint8_t* DataY() const override;
|
||||
const uint8_t* DataU() const override;
|
||||
const uint8_t* DataV() const override;
|
||||
int StrideY() const override;
|
||||
int StrideU() const override;
|
||||
int StrideV() const override;
|
||||
|
||||
void* native_handle() const override;
|
||||
|
||||
protected:
|
||||
void* native_handle_;
|
||||
const int width_;
|
||||
const int height_;
|
||||
};
|
||||
|
||||
// Deprecated. Please use WrapI420Buffer(...) instead.
|
||||
class WrappedI420Buffer : public I420BufferInterface {
|
||||
public:
|
||||
|
||||
@ -21,57 +21,6 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
NativeHandleBuffer::NativeHandleBuffer(void* native_handle,
|
||||
int width,
|
||||
int height)
|
||||
: native_handle_(native_handle), width_(width), height_(height) {
|
||||
RTC_DCHECK(native_handle != nullptr);
|
||||
RTC_DCHECK_GT(width, 0);
|
||||
RTC_DCHECK_GT(height, 0);
|
||||
}
|
||||
|
||||
VideoFrameBuffer::Type NativeHandleBuffer::type() const {
|
||||
return Type::kNative;
|
||||
}
|
||||
|
||||
int NativeHandleBuffer::width() const {
|
||||
return width_;
|
||||
}
|
||||
|
||||
int NativeHandleBuffer::height() const {
|
||||
return height_;
|
||||
}
|
||||
|
||||
const uint8_t* NativeHandleBuffer::DataY() const {
|
||||
RTC_NOTREACHED(); // Should not be called.
|
||||
return nullptr;
|
||||
}
|
||||
const uint8_t* NativeHandleBuffer::DataU() const {
|
||||
RTC_NOTREACHED(); // Should not be called.
|
||||
return nullptr;
|
||||
}
|
||||
const uint8_t* NativeHandleBuffer::DataV() const {
|
||||
RTC_NOTREACHED(); // Should not be called.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int NativeHandleBuffer::StrideY() const {
|
||||
RTC_NOTREACHED(); // Should not be called.
|
||||
return 0;
|
||||
}
|
||||
int NativeHandleBuffer::StrideU() const {
|
||||
RTC_NOTREACHED(); // Should not be called.
|
||||
return 0;
|
||||
}
|
||||
int NativeHandleBuffer::StrideV() const {
|
||||
RTC_NOTREACHED(); // Should not be called.
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* NativeHandleBuffer::native_handle() const {
|
||||
return native_handle_;
|
||||
}
|
||||
|
||||
WrappedI420Buffer::WrappedI420Buffer(int width,
|
||||
int height,
|
||||
const uint8_t* y_plane,
|
||||
|
||||
Reference in New Issue
Block a user