Chromium Code Reviews| 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() { |