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

Side by Side Diff: content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc

Issue 2466353003: Replace all use of cricket::VideoFrame and cricket::WebRtcVideoFrame with webrtc::VideoFrame. (Closed)
Patch Set: Drop unneeded include. Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/webrtc/webrtc_video_capturer_adapter.h" 5 #include "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/aligned_memory.h" 8 #include "base/memory/aligned_memory.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/synchronization/waitable_event.h" 10 #include "base/synchronization/waitable_event.h"
11 #include "base/trace_event/trace_event.h" 11 #include "base/trace_event/trace_event.h"
12 #include "content/common/gpu/client/context_provider_command_buffer.h" 12 #include "content/common/gpu/client/context_provider_command_buffer.h"
13 #include "content/renderer/media/webrtc/webrtc_video_frame_adapter.h" 13 #include "content/renderer/media/webrtc/webrtc_video_frame_adapter.h"
14 #include "content/renderer/render_thread_impl.h" 14 #include "content/renderer/render_thread_impl.h"
15 #include "media/base/timestamp_constants.h" 15 #include "media/base/timestamp_constants.h"
16 #include "media/base/video_util.h" 16 #include "media/base/video_util.h"
17 #include "media/renderers/skcanvas_video_renderer.h" 17 #include "media/renderers/skcanvas_video_renderer.h"
18 #include "skia/ext/platform_canvas.h" 18 #include "skia/ext/platform_canvas.h"
19 #include "third_party/libyuv/include/libyuv/convert.h" 19 #include "third_party/libyuv/include/libyuv/convert.h"
20 #include "third_party/libyuv/include/libyuv/convert_from.h" 20 #include "third_party/libyuv/include/libyuv/convert_from.h"
21 #include "third_party/libyuv/include/libyuv/scale.h" 21 #include "third_party/libyuv/include/libyuv/scale.h"
22 #include "third_party/skia/include/core/SkSurface.h" 22 #include "third_party/skia/include/core/SkSurface.h"
23 #include "third_party/webrtc/common_video/include/video_frame_buffer.h"
24 #include "third_party/webrtc/common_video/rotation.h" 23 #include "third_party/webrtc/common_video/rotation.h"
25 #include "third_party/webrtc/media/engine/webrtcvideoframe.h" 24 // #include "third_party/webrtc/video_frame.h"
Sergey Ulanov 2016/11/02 19:33:59 Why is this commented?
nisse-chromium (ooo August 14) 2016/11/07 09:58:19 Ooops, it's a left over. I'll delete this line.
26 25
27 namespace content { 26 namespace content {
28 27
29 namespace { 28 namespace {
30 29
31 // Empty method used for keeping a reference to the original media::VideoFrame. 30 // Empty method used for keeping a reference to the original media::VideoFrame.
32 // The reference to |frame| is kept in the closure that calls this method. 31 // The reference to |frame| is kept in the closure that calls this method.
33 void ReleaseOriginalFrame(const scoped_refptr<media::VideoFrame>& frame) { 32 void ReleaseOriginalFrame(const scoped_refptr<media::VideoFrame>& frame) {
34 } 33 }
35 34
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 rtc::TimeMicros(), 193 rtc::TimeMicros(),
195 &adapted_width, &adapted_height, 194 &adapted_width, &adapted_height,
196 &crop_width, &crop_height, &crop_x, &crop_y, 195 &crop_width, &crop_height, &crop_x, &crop_y,
197 &translated_camera_time_us)) { 196 &translated_camera_time_us)) {
198 return; 197 return;
199 } 198 }
200 199
201 // Return |frame| directly if it is texture backed, because there is no 200 // Return |frame| directly if it is texture backed, because there is no
202 // cropping support for texture yet. See http://crbug/503653. 201 // cropping support for texture yet. See http://crbug/503653.
203 if (frame->HasTextures()) { 202 if (frame->HasTextures()) {
204 OnFrame(cricket::WebRtcVideoFrame( 203 OnFrame(webrtc::VideoFrame(
205 new rtc::RefCountedObject<WebRtcVideoFrameAdapter>( 204 new rtc::RefCountedObject<WebRtcVideoFrameAdapter>(
206 frame, base::Bind(&TextureFrameCopier::CopyTextureFrame, 205 frame, base::Bind(&TextureFrameCopier::CopyTextureFrame,
207 texture_copier_)), 206 texture_copier_)),
208 webrtc::kVideoRotation_0, translated_camera_time_us), 207 webrtc::kVideoRotation_0, translated_camera_time_us),
209 orig_width, orig_height); 208 orig_width, orig_height);
210 return; 209 return;
211 } 210 }
212 211
213 // Translate crop rectangle from natural size to visible size. 212 // Translate crop rectangle from natural size to visible size.
214 gfx::Rect cropped_visible_rect( 213 gfx::Rect cropped_visible_rect(
215 frame->visible_rect().x() + 214 frame->visible_rect().x() +
216 crop_x * frame->visible_rect().width() / orig_width, 215 crop_x * frame->visible_rect().width() / orig_width,
217 frame->visible_rect().y() + 216 frame->visible_rect().y() +
218 crop_y * frame->visible_rect().height() / orig_height, 217 crop_y * frame->visible_rect().height() / orig_height,
219 crop_width * frame->visible_rect().width() / orig_width, 218 crop_width * frame->visible_rect().width() / orig_width,
220 crop_height * frame->visible_rect().height() / orig_height); 219 crop_height * frame->visible_rect().height() / orig_height);
221 220
222 const gfx::Size adapted_size(adapted_width, adapted_height); 221 const gfx::Size adapted_size(adapted_width, adapted_height);
223 scoped_refptr<media::VideoFrame> video_frame = 222 scoped_refptr<media::VideoFrame> video_frame =
224 media::VideoFrame::WrapVideoFrame(frame, frame->format(), 223 media::VideoFrame::WrapVideoFrame(frame, frame->format(),
225 cropped_visible_rect, adapted_size); 224 cropped_visible_rect, adapted_size);
226 if (!video_frame) 225 if (!video_frame)
227 return; 226 return;
228 227
229 video_frame->AddDestructionObserver(base::Bind(&ReleaseOriginalFrame, frame)); 228 video_frame->AddDestructionObserver(base::Bind(&ReleaseOriginalFrame, frame));
230 229
231 // If no scaling is needed, return a wrapped version of |frame| directly. 230 // If no scaling is needed, return a wrapped version of |frame| directly.
232 if (video_frame->natural_size() == video_frame->visible_rect().size()) { 231 if (video_frame->natural_size() == video_frame->visible_rect().size()) {
233 OnFrame(cricket::WebRtcVideoFrame( 232 OnFrame(webrtc::VideoFrame(
234 new rtc::RefCountedObject<WebRtcVideoFrameAdapter>( 233 new rtc::RefCountedObject<WebRtcVideoFrameAdapter>(
235 video_frame, 234 video_frame,
236 WebRtcVideoFrameAdapter::CopyTextureFrameCallback()), 235 WebRtcVideoFrameAdapter::CopyTextureFrameCallback()),
237 webrtc::kVideoRotation_0, translated_camera_time_us), 236 webrtc::kVideoRotation_0, translated_camera_time_us),
238 orig_width, orig_height); 237 orig_width, orig_height);
239 return; 238 return;
240 } 239 }
241 240
242 // We need to scale the frame before we hand it over to webrtc. 241 // We need to scale the frame before we hand it over to webrtc.
243 scoped_refptr<media::VideoFrame> scaled_frame = 242 scoped_refptr<media::VideoFrame> scaled_frame =
244 scaled_frame_pool_.CreateFrame(media::PIXEL_FORMAT_I420, adapted_size, 243 scaled_frame_pool_.CreateFrame(media::PIXEL_FORMAT_I420, adapted_size,
245 gfx::Rect(adapted_size), adapted_size, 244 gfx::Rect(adapted_size), adapted_size,
246 frame->timestamp()); 245 frame->timestamp());
247 libyuv::I420Scale(video_frame->visible_data(media::VideoFrame::kYPlane), 246 libyuv::I420Scale(video_frame->visible_data(media::VideoFrame::kYPlane),
248 video_frame->stride(media::VideoFrame::kYPlane), 247 video_frame->stride(media::VideoFrame::kYPlane),
249 video_frame->visible_data(media::VideoFrame::kUPlane), 248 video_frame->visible_data(media::VideoFrame::kUPlane),
250 video_frame->stride(media::VideoFrame::kUPlane), 249 video_frame->stride(media::VideoFrame::kUPlane),
251 video_frame->visible_data(media::VideoFrame::kVPlane), 250 video_frame->visible_data(media::VideoFrame::kVPlane),
252 video_frame->stride(media::VideoFrame::kVPlane), 251 video_frame->stride(media::VideoFrame::kVPlane),
253 video_frame->visible_rect().width(), 252 video_frame->visible_rect().width(),
254 video_frame->visible_rect().height(), 253 video_frame->visible_rect().height(),
255 scaled_frame->data(media::VideoFrame::kYPlane), 254 scaled_frame->data(media::VideoFrame::kYPlane),
256 scaled_frame->stride(media::VideoFrame::kYPlane), 255 scaled_frame->stride(media::VideoFrame::kYPlane),
257 scaled_frame->data(media::VideoFrame::kUPlane), 256 scaled_frame->data(media::VideoFrame::kUPlane),
258 scaled_frame->stride(media::VideoFrame::kUPlane), 257 scaled_frame->stride(media::VideoFrame::kUPlane),
259 scaled_frame->data(media::VideoFrame::kVPlane), 258 scaled_frame->data(media::VideoFrame::kVPlane),
260 scaled_frame->stride(media::VideoFrame::kVPlane), 259 scaled_frame->stride(media::VideoFrame::kVPlane),
261 adapted_width, adapted_height, libyuv::kFilterBilinear); 260 adapted_width, adapted_height, libyuv::kFilterBilinear);
262 261
263 OnFrame(cricket::WebRtcVideoFrame( 262 OnFrame(webrtc::VideoFrame(
264 new rtc::RefCountedObject<WebRtcVideoFrameAdapter>( 263 new rtc::RefCountedObject<WebRtcVideoFrameAdapter>(
265 scaled_frame, 264 scaled_frame,
266 WebRtcVideoFrameAdapter::CopyTextureFrameCallback()), 265 WebRtcVideoFrameAdapter::CopyTextureFrameCallback()),
267 webrtc::kVideoRotation_0, translated_camera_time_us), 266 webrtc::kVideoRotation_0, translated_camera_time_us),
268 orig_width, orig_height); 267 orig_width, orig_height);
269 } 268 }
270 269
271 cricket::CaptureState WebRtcVideoCapturerAdapter::Start( 270 cricket::CaptureState WebRtcVideoCapturerAdapter::Start(
272 const cricket::VideoFormat& capture_format) { 271 const cricket::VideoFormat& capture_format) {
273 DCHECK(thread_checker_.CalledOnValidThread()); 272 DCHECK(thread_checker_.CalledOnValidThread());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 // just use what is provided. 315 // just use what is provided.
317 // Use the desired format as the best format. 316 // Use the desired format as the best format.
318 best_format->width = desired.width; 317 best_format->width = desired.width;
319 best_format->height = desired.height; 318 best_format->height = desired.height;
320 best_format->fourcc = cricket::FOURCC_I420; 319 best_format->fourcc = cricket::FOURCC_I420;
321 best_format->interval = desired.interval; 320 best_format->interval = desired.interval;
322 return true; 321 return true;
323 } 322 }
324 323
325 } // namespace content 324 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698