Index: content/renderer/media/rtc_video_renderer.cc |
diff --git a/content/renderer/media/rtc_video_renderer.cc b/content/renderer/media/rtc_video_renderer.cc |
index 013fcad8dfb2e86994afc31872576ac71423f0a7..f52b1e11ea932edda4288e18b17fc851554e99a6 100644 |
--- a/content/renderer/media/rtc_video_renderer.cc |
+++ b/content/renderer/media/rtc_video_renderer.cc |
@@ -11,6 +11,11 @@ |
namespace content { |
+// Reviewers ? Do you know a better way than to add this noop method? |
Jói
2014/02/28 14:52:50
You can use base::DoNothing (which is void DoNothi
perkj_chrome
2014/03/02 09:20:44
After discussion- this is needed to addref and rel
|
+static void ReleaseOriginalFrame(const scoped_refptr<media::VideoFrame>& frame) { |
+ |
+} |
+ |
RTCVideoRenderer::RTCVideoRenderer( |
const blink::WebMediaStreamTrack& video_track, |
const base::Closure& error_cb, |
@@ -88,8 +93,28 @@ void RTCVideoRenderer::OnVideoFrame( |
TRACE_EVENT_SCOPE_THREAD, |
"timestamp", |
frame->GetTimestamp().InMilliseconds()); |
- repaint_cb_.Run(frame); |
first_frame_rendered_ = true; |
+ |
+ if (frame->format() == media::VideoFrame::I420) { |
+ scoped_refptr<media::VideoFrame> yuv_frame = |
+ media::VideoFrame::WrapExternalYuvData( |
+ media::VideoFrame::YV12, |
+ frame->coded_size(), |
+ frame->visible_rect(), |
+ frame->natural_size(), |
+ frame->stride(media::VideoFrame::kYPlane), |
+ frame->stride(media::VideoFrame::kUPlane), |
+ frame->stride(media::VideoFrame::kVPlane), |
+ frame->data(media::VideoFrame::kYPlane), |
+ frame->data(media::VideoFrame::kUPlane), |
+ frame->data(media::VideoFrame::kVPlane), |
+ frame->GetTimestamp(), |
+ // Can this be done without the function? Ie all I want is to add a refence and remove the reference once this callback is triggered. |
+ base::Bind(&ReleaseOriginalFrame, frame)); |
Alpha Left Google
2014/02/28 02:49:22
I'm not sure if this is correct.
Does this callba
Jói
2014/02/28 14:52:50
You've bound both parameters so this wouldn't work
Jói
2014/02/28 15:46:10
My mistake, I was assuming the WrapExternalYuvData
perkj_chrome
2014/03/02 09:20:44
Done.
|
+ repaint_cb_.Run(yuv_frame); |
+ } else { |
+ repaint_cb_.Run(frame); |
Alpha Left Google
2014/02/28 02:49:22
nit: What about:
if (frame->format() != media::Vi
perkj_chrome
2014/03/02 09:20:44
Done.
|
+ } |
} |
void RTCVideoRenderer::MaybeRenderSignalingFrame() { |