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

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

Issue 877283004: MediaStreamRemoteVideoSource: Wrap cricket::VideoFrame instead of copying. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/webrtc/media_stream_remote_video_source.cc
diff --git a/content/renderer/media/webrtc/media_stream_remote_video_source.cc b/content/renderer/media/webrtc/media_stream_remote_video_source.cc
index b75272126ec13263c5201ba0f5db6324b75a01d2..fa1a9ab2e610baeafcb7d4acafca725b9eea82af 100644
--- a/content/renderer/media/webrtc/media_stream_remote_video_source.cc
+++ b/content/renderer/media/webrtc/media_stream_remote_video_source.cc
@@ -18,6 +18,14 @@
#include "media/base/video_util.h"
#include "third_party/libjingle/source/talk/media/base/videoframe.h"
+namespace {
+
+// Release |frame| when it goes out of scope.
tommi (sloooow) - chröme 2015/01/29 14:21:41 nit: s/Release/Delete (since Release usually refer
magjed_chromium 2015/01/30 12:27:44 Done.
+void FreeCricketFrame(scoped_ptr<cricket::VideoFrame> frame) {
+}
+
+} // namespace
+
namespace content {
// Internal class used for receiving frames from the webrtc track on a
@@ -86,21 +94,28 @@ RemoteVideoSourceDelegate::RenderFrame(
video_frame->set_timestamp(timestamp);
} else {
gfx::Size size(frame->GetWidth(), frame->GetHeight());
- video_frame = frame_pool_.CreateFrame(
perkj_chrome 2015/01/30 08:57:40 frame_pool_ is not needed now. Please remove it an
magjed_chromium 2015/01/30 12:27:44 Done.
- media::VideoFrame::YV12, size, gfx::Rect(size), size, timestamp);
// Non-square pixels are unsupported.
DCHECK_EQ(frame->GetPixelWidth(), 1u);
DCHECK_EQ(frame->GetPixelHeight(), 1u);
- int y_rows = frame->GetHeight();
- int uv_rows = frame->GetChromaHeight();
- CopyYPlane(
- frame->GetYPlane(), frame->GetYPitch(), y_rows, video_frame.get());
- CopyUPlane(
- frame->GetUPlane(), frame->GetUPitch(), uv_rows, video_frame.get());
- CopyVPlane(
- frame->GetVPlane(), frame->GetVPitch(), uv_rows, video_frame.get());
+ // Take a shallow copy. Both |frame| and |copied_frame| will share a single
perkj_chrome 2015/01/30 08:57:40 nit Make a shallow copy...
magjed_chromium 2015/01/30 12:27:44 Done.
+ // reference counted frame buffer.
+ scoped_ptr<cricket::VideoFrame> copied_frame(frame->Copy());
+ video_frame =
+ media::VideoFrame::WrapExternalYuvData(
+ media::VideoFrame::YV12,
+ size,
+ gfx::Rect(size),
+ size,
+ copied_frame->GetYPitch(),
+ copied_frame->GetUPitch(),
+ copied_frame->GetVPitch(),
+ copied_frame->GetYPlane(),
+ copied_frame->GetUPlane(),
+ copied_frame->GetVPlane(),
+ timestamp,
+ base::Bind(&FreeCricketFrame, Passed(&copied_frame)));
}
media::VideoPixelFormat pixel_format =
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698