| Index: content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc
|
| diff --git a/content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc b/content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc
|
| index 962164c2245fa9140aa4c2346f10d7603d96faf5..10ad8578a99c1842800841ff7697afa1518a4e01 100644
|
| --- a/content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc
|
| +++ b/content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc
|
| @@ -11,6 +11,7 @@
|
| #include "media/base/timestamp_constants.h"
|
| #include "media/base/video_frame.h"
|
| #include "media/base/video_frame_pool.h"
|
| +#include "media/base/video_util.h"
|
| #include "third_party/libyuv/include/libyuv/convert_from.h"
|
| #include "third_party/libyuv/include/libyuv/scale.h"
|
| #include "third_party/webrtc/common_video/include/video_frame_buffer.h"
|
| @@ -94,7 +95,8 @@ class WebRtcVideoCapturerAdapter::MediaVideoFrameFactory
|
|
|
| const gfx::Size output_size(output_width, output_height);
|
| scoped_refptr<media::VideoFrame> video_frame =
|
| - media::VideoFrame::WrapVideoFrame(frame_, visible_rect, output_size);
|
| + media::VideoFrame::WrapVideoFrame(frame_, frame_->format(),
|
| + visible_rect, output_size);
|
| if (!video_frame)
|
| return nullptr;
|
| video_frame->AddDestructionObserver(
|
| @@ -216,16 +218,22 @@ bool WebRtcVideoCapturerAdapter::GetBestCaptureFormat(
|
| }
|
|
|
| void WebRtcVideoCapturerAdapter::OnFrameCaptured(
|
| - const scoped_refptr<media::VideoFrame>& frame) {
|
| + const scoped_refptr<media::VideoFrame>& video_frame) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| TRACE_EVENT0("video", "WebRtcVideoCapturerAdapter::OnFrameCaptured");
|
| - if (!(frame->IsMappable() && (frame->format() == media::PIXEL_FORMAT_I420 ||
|
| - frame->format() == media::PIXEL_FORMAT_YV12))) {
|
| + if (!(video_frame->IsMappable() &&
|
| + (video_frame->format() == media::PIXEL_FORMAT_I420 ||
|
| + video_frame->format() == media::PIXEL_FORMAT_YV12 ||
|
| + video_frame->format() == media::PIXEL_FORMAT_YV12A))) {
|
| // Since connecting sources and sinks do not check the format, we need to
|
| // just ignore formats that we can not handle.
|
| NOTREACHED();
|
| return;
|
| }
|
| + scoped_refptr<media::VideoFrame> frame = video_frame;
|
| + // Drop alpha channel since we do not support it yet.
|
| + if (frame->format() == media::PIXEL_FORMAT_YV12A)
|
| + frame = media::WrapAsI420VideoFrame(video_frame);
|
|
|
| // Inject the frame via the VideoFrameFactory of base class.
|
| MediaVideoFrameFactory* media_video_frame_factory =
|
|
|