Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(588)

Unified Diff: content/renderer/media/webrtc/webrtc_video_frame_adapter.cc

Issue 2925313002: Update WebRtcVideoFrameAdapter to new buffer interface (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/webrtc/webrtc_video_frame_adapter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/webrtc/webrtc_video_frame_adapter.cc
diff --git a/content/renderer/media/webrtc/webrtc_video_frame_adapter.cc b/content/renderer/media/webrtc/webrtc_video_frame_adapter.cc
index eaeec889a6e61d56dbc5436cf252ad2f79880a99..a08ba89ca33c657bd5c53b1bc54031d62cdb749c 100644
--- a/content/renderer/media/webrtc/webrtc_video_frame_adapter.cc
+++ b/content/renderer/media/webrtc/webrtc_video_frame_adapter.cc
@@ -8,6 +8,42 @@
namespace {
+class I420Adapter : public webrtc::I420BufferInterface {
+ public:
+ explicit I420Adapter(const scoped_refptr<media::VideoFrame>& frame)
+ : frame_(frame) {}
+
+ private:
+ int width() const override { return frame_->visible_rect().width(); }
+ int height() const override { return frame_->visible_rect().height(); }
+
+ const uint8_t* DataY() const override {
+ return frame_->visible_data(media::VideoFrame::kYPlane);
+ }
+
+ const uint8_t* DataU() const override {
+ return frame_->visible_data(media::VideoFrame::kUPlane);
+ }
+
+ const uint8_t* DataV() const override {
+ return frame_->visible_data(media::VideoFrame::kVPlane);
+ }
+
+ int StrideY() const override {
+ return frame_->stride(media::VideoFrame::kYPlane);
+ }
+
+ int StrideU() const override {
+ return frame_->stride(media::VideoFrame::kUPlane);
+ }
+
+ int StrideV() const override {
+ return frame_->stride(media::VideoFrame::kVPlane);
+ }
+
+ scoped_refptr<media::VideoFrame> frame_;
+};
+
void IsValidFrame(const scoped_refptr<media::VideoFrame>& frame) {
// Paranoia checks.
DCHECK(frame);
@@ -36,6 +72,10 @@ WebRtcVideoFrameAdapter::WebRtcVideoFrameAdapter(
WebRtcVideoFrameAdapter::~WebRtcVideoFrameAdapter() {
}
+webrtc::VideoFrameBuffer::Type WebRtcVideoFrameAdapter::type() const {
+ return Type::kNative;
+}
+
int WebRtcVideoFrameAdapter::width() const {
return frame_->visible_rect().width();
}
@@ -73,13 +113,8 @@ void* WebRtcVideoFrameAdapter::native_handle() const {
return nullptr;
}
-rtc::scoped_refptr<webrtc::VideoFrameBuffer>
-WebRtcVideoFrameAdapter::NativeToI420Buffer() {
- if (frame_->storage_type() == media::VideoFrame::STORAGE_SHMEM) {
- IsValidFrame(frame_);
- return this;
- }
-
+rtc::scoped_refptr<webrtc::I420BufferInterface>
+WebRtcVideoFrameAdapter::ToI420() {
if (frame_->HasTextures()) {
emircan 2017/06/10 00:09:27 DCHECK(media::VideoFrame::STORAGE_SHMEM == frame_-
magjed_chromium 2017/06/10 15:45:00 ToI420 is allowed to be called for any storage typ
if (copy_texture_callback_.is_null()) {
DLOG(ERROR) << "Texture backed frame cannot be copied.";
@@ -91,12 +126,10 @@ WebRtcVideoFrameAdapter::NativeToI420Buffer() {
if (!new_frame)
return nullptr;
frame_ = new_frame;
- IsValidFrame(frame_);
- return this;
}
- NOTREACHED();
- return nullptr;
+ IsValidFrame(frame_);
+ return new rtc::RefCountedObject<I420Adapter>(frame_);
}
} // namespace content
« no previous file with comments | « content/renderer/media/webrtc/webrtc_video_frame_adapter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698