| OLD | NEW |
| 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/media_stream_video_source.h" | 5 #include "content/renderer/media/media_stream_video_source.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 DCHECK(thread_checker().CalledOnValidThread()); | 302 DCHECK(thread_checker().CalledOnValidThread()); |
| 303 io_message_loop()->PostTask( | 303 io_message_loop()->PostTask( |
| 304 FROM_HERE, | 304 FROM_HERE, |
| 305 base::Bind( | 305 base::Bind( |
| 306 &FrameDeliverer::AddCallbackWithResolutionOnIO, | 306 &FrameDeliverer::AddCallbackWithResolutionOnIO, |
| 307 this, id, callback, max_frame_output_size)); | 307 this, id, callback, max_frame_output_size)); |
| 308 } | 308 } |
| 309 | 309 |
| 310 virtual void DeliverFrameOnIO( | 310 virtual void DeliverFrameOnIO( |
| 311 const scoped_refptr<media::VideoFrame>& frame, | 311 const scoped_refptr<media::VideoFrame>& frame, |
| 312 const media::VideoCaptureFormat& format) OVERRIDE { | 312 const media::VideoCaptureFormat& format, |
| 313 const base::TimeTicks& start_ticks) OVERRIDE { |
| 313 DCHECK(io_message_loop()->BelongsToCurrentThread()); | 314 DCHECK(io_message_loop()->BelongsToCurrentThread()); |
| 314 TRACE_EVENT0("video", "MediaStreamVideoSource::DeliverFrameOnIO"); | 315 TRACE_EVENT0("video", "MediaStreamVideoSource::DeliverFrameOnIO"); |
| 315 if (max_output_size_.IsEmpty()) | 316 if (max_output_size_.IsEmpty()) |
| 316 return; // Frame received before the output has been decided. | 317 return; // Frame received before the output has been decided. |
| 317 | 318 |
| 318 scoped_refptr<media::VideoFrame> video_frame(frame); | 319 scoped_refptr<media::VideoFrame> video_frame(frame); |
| 319 const gfx::Size& visible_size = frame->visible_rect().size(); | 320 const gfx::Size& visible_size = frame->visible_rect().size(); |
| 320 if (visible_size.width() > max_output_size_.width() || | 321 if (visible_size.width() > max_output_size_.width() || |
| 321 visible_size.height() > max_output_size_.height()) { | 322 visible_size.height() > max_output_size_.height()) { |
| 322 // If |frame| is not the size that is expected, we need to crop it by | 323 // If |frame| is not the size that is expected, we need to crop it by |
| 323 // providing a new |visible_rect|. The new visible rect must be within the | 324 // providing a new |visible_rect|. The new visible rect must be within the |
| 324 // original |visible_rect|. | 325 // original |visible_rect|. |
| 325 gfx::Rect output_rect = frame->visible_rect(); | 326 gfx::Rect output_rect = frame->visible_rect(); |
| 326 output_rect.ClampToCenteredSize(max_output_size_); | 327 output_rect.ClampToCenteredSize(max_output_size_); |
| 327 // TODO(perkj): Allow cropping of textures once http://crbug/362521 is | 328 // TODO(perkj): Allow cropping of textures once http://crbug/362521 is |
| 328 // fixed. | 329 // fixed. |
| 329 if (frame->format() != media::VideoFrame::NATIVE_TEXTURE) { | 330 if (frame->format() != media::VideoFrame::NATIVE_TEXTURE) { |
| 330 video_frame = media::VideoFrame::WrapVideoFrame( | 331 video_frame = media::VideoFrame::WrapVideoFrame( |
| 331 frame, | 332 frame, |
| 332 output_rect, | 333 output_rect, |
| 333 output_rect.size(), | 334 output_rect.size(), |
| 334 base::Bind(&ReleaseOriginalFrame, frame)); | 335 base::Bind(&ReleaseOriginalFrame, frame)); |
| 335 } | 336 } |
| 336 } | 337 } |
| 337 VideoFrameDeliverer::DeliverFrameOnIO(video_frame, format); | 338 VideoFrameDeliverer::DeliverFrameOnIO(video_frame, format, start_ticks); |
| 338 } | 339 } |
| 339 | 340 |
| 340 protected: | 341 protected: |
| 341 virtual ~FrameDeliverer() { | 342 virtual ~FrameDeliverer() { |
| 342 } | 343 } |
| 343 | 344 |
| 344 void AddCallbackWithResolutionOnIO( | 345 void AddCallbackWithResolutionOnIO( |
| 345 void* id, | 346 void* id, |
| 346 const VideoCaptureDeliverFrameCB& callback, | 347 const VideoCaptureDeliverFrameCB& callback, |
| 347 const gfx::Size& max_frame_output_size) { | 348 const gfx::Size& max_frame_output_size) { |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 : track(track), | 596 : track(track), |
| 596 frame_callback(frame_callback), | 597 frame_callback(frame_callback), |
| 597 constraints(constraints), | 598 constraints(constraints), |
| 598 callback(callback) { | 599 callback(callback) { |
| 599 } | 600 } |
| 600 | 601 |
| 601 MediaStreamVideoSource::RequestedConstraints::~RequestedConstraints() { | 602 MediaStreamVideoSource::RequestedConstraints::~RequestedConstraints() { |
| 602 } | 603 } |
| 603 | 604 |
| 604 } // namespace content | 605 } // namespace content |
| OLD | NEW |