Index: content/renderer/media/video_track_recorder.cc |
diff --git a/content/renderer/media/video_track_recorder.cc b/content/renderer/media/video_track_recorder.cc |
index e95999a5d40861076f40550cde1dfda049950ecc..9c1bbd628ae049e92f539abb886f6fcd81fddc3c 100644 |
--- a/content/renderer/media/video_track_recorder.cc |
+++ b/content/renderer/media/video_track_recorder.cc |
@@ -14,6 +14,7 @@ |
#include "base/time/time.h" |
#include "base/trace_event/trace_event.h" |
#include "media/base/video_frame.h" |
+#include "media/base/video_util.h" |
#include "ui/gfx/geometry/size.h" |
extern "C" { |
@@ -186,12 +187,23 @@ void VideoTrackRecorder::VpxEncoder::StartFrameEncode( |
} |
void VideoTrackRecorder::VpxEncoder::EncodeOnEncodingThread( |
- const scoped_refptr<VideoFrame>& frame, |
+ const scoped_refptr<VideoFrame>& video_frame, |
base::TimeTicks capture_timestamp) { |
TRACE_EVENT0("video", |
"VideoTrackRecorder::VpxEncoder::EncodeOnEncodingThread"); |
DCHECK(encoding_thread_->task_runner()->BelongsToCurrentThread()); |
+ if (!(video_frame->format() == media::PIXEL_FORMAT_I420 || |
+ video_frame->format() == media::PIXEL_FORMAT_YV12 || |
+ video_frame->format() == media::PIXEL_FORMAT_YV12A)) { |
+ 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); |
+ |
const gfx::Size frame_size = frame->visible_rect().size(); |
if (!IsInitialized() || |
gfx::Size(codec_config_.g_w, codec_config_.g_h) != frame_size) { |