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

Side by Side Diff: content/renderer/media/rtc_video_renderer.cc

Issue 13554003: Use NTP time for video frame timestamp. Add tracing for timestamps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix RenderFrame using timestamp as nanoseconds. Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/media/rtc_video_capturer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/rtc_video_renderer.h" 5 #include "content/renderer/media/rtc_video_renderer.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop_proxy.h" 11 #include "base/message_loop_proxy.h"
12 #include "media/base/video_frame.h" 12 #include "media/base/video_frame.h"
13 #include "media/base/video_util.h" 13 #include "media/base/video_util.h"
14 #include "third_party/libjingle/source/talk/base/timeutils.h"
15 #include "third_party/libjingle/source/talk/media/base/videoframe.h" 14 #include "third_party/libjingle/source/talk/media/base/videoframe.h"
16 15
17 using media::CopyYPlane; 16 using media::CopyYPlane;
18 using media::CopyUPlane; 17 using media::CopyUPlane;
19 using media::CopyVPlane; 18 using media::CopyVPlane;
20 19
21 namespace content { 20 namespace content {
22 21
23 RTCVideoRenderer::RTCVideoRenderer( 22 RTCVideoRenderer::RTCVideoRenderer(
24 webrtc::VideoTrackInterface* video_track, 23 webrtc::VideoTrackInterface* video_track,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 DCHECK(message_loop_proxy_->BelongsToCurrentThread()); 66 DCHECK(message_loop_proxy_->BelongsToCurrentThread());
68 if (video_track_ && state_ == kStarted) { 67 if (video_track_ && state_ == kStarted) {
69 state_ = kPaused; 68 state_ = kPaused;
70 } 69 }
71 } 70 }
72 71
73 void RTCVideoRenderer::SetSize(int width, int height) { 72 void RTCVideoRenderer::SetSize(int width, int height) {
74 } 73 }
75 74
76 void RTCVideoRenderer::RenderFrame(const cricket::VideoFrame* frame) { 75 void RTCVideoRenderer::RenderFrame(const cricket::VideoFrame* frame) {
77 base::TimeDelta timestamp = base::TimeDelta::FromMilliseconds( 76 TRACE_EVENT_INSTANT2("rtc_video_renderer",
78 frame->GetTimeStamp() / talk_base::kNumNanosecsPerMillisec); 77 "RenderFrame",
78 TRACE_EVENT_SCOPE_THREAD,
79 "elapsed time",
80 frame->GetElapsedTime(),
81 "timestamp",
82 frame->GetTimeStamp());
83
79 gfx::Size size(frame->GetWidth(), frame->GetHeight()); 84 gfx::Size size(frame->GetWidth(), frame->GetHeight());
80 scoped_refptr<media::VideoFrame> video_frame = 85 scoped_refptr<media::VideoFrame> video_frame =
81 media::VideoFrame::CreateFrame(media::VideoFrame::YV12, 86 media::VideoFrame::CreateFrame(media::VideoFrame::YV12,
82 size, 87 size,
83 gfx::Rect(size), 88 gfx::Rect(size),
84 size, 89 size,
85 timestamp); 90 base::TimeDelta::FromMilliseconds(
91 frame->GetTimeStamp()));
86 92
87 // Aspect ratio unsupported; DCHECK when there are non-square pixels. 93 // Aspect ratio unsupported; DCHECK when there are non-square pixels.
88 DCHECK_EQ(frame->GetPixelWidth(), 1u); 94 DCHECK_EQ(frame->GetPixelWidth(), 1u);
89 DCHECK_EQ(frame->GetPixelHeight(), 1u); 95 DCHECK_EQ(frame->GetPixelHeight(), 1u);
90 96
91 int y_rows = frame->GetHeight(); 97 int y_rows = frame->GetHeight();
92 int uv_rows = frame->GetHeight() / 2; // YV12 format. 98 int uv_rows = frame->GetHeight() / 2; // YV12 format.
93 CopyYPlane(frame->GetYPlane(), frame->GetYPitch(), y_rows, video_frame); 99 CopyYPlane(frame->GetYPlane(), frame->GetYPitch(), y_rows, video_frame);
94 CopyUPlane(frame->GetUPlane(), frame->GetUPitch(), uv_rows, video_frame); 100 CopyUPlane(frame->GetUPlane(), frame->GetUPitch(), uv_rows, video_frame);
95 CopyVPlane(frame->GetVPlane(), frame->GetVPitch(), uv_rows, video_frame); 101 CopyVPlane(frame->GetVPlane(), frame->GetVPitch(), uv_rows, video_frame);
(...skipping 27 matching lines...) Expand all
123 129
124 if (state_ != kStarted) { 130 if (state_ != kStarted) {
125 return; 131 return;
126 } 132 }
127 133
128 TRACE_EVENT0("video", "DoRenderFrameOnMainThread"); 134 TRACE_EVENT0("video", "DoRenderFrameOnMainThread");
129 repaint_cb_.Run(video_frame); 135 repaint_cb_.Run(video_frame);
130 } 136 }
131 137
132 } // namespace content 138 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/rtc_video_capturer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698