Index: content/renderer/media/image_capture_frame_grabber.cc |
diff --git a/content/renderer/media/image_capture_frame_grabber.cc b/content/renderer/media/image_capture_frame_grabber.cc |
index 5d39b3ebcc5dda661cea9e78b8510ed330902835..87f2afe7d18bd9e34082db1676dd60954cb8d2f4 100644 |
--- a/content/renderer/media/image_capture_frame_grabber.cc |
+++ b/content/renderer/media/image_capture_frame_grabber.cc |
@@ -79,14 +79,19 @@ void ImageCaptureFrameGrabber::SingleShotFrameHandler::OnVideoFrameOnIOThread( |
return; |
} |
- libyuv::I420ToARGB(frame->visible_data(media::VideoFrame::kYPlane), |
- frame->stride(media::VideoFrame::kYPlane), |
- frame->visible_data(media::VideoFrame::kUPlane), |
- frame->stride(media::VideoFrame::kUPlane), |
- frame->visible_data(media::VideoFrame::kVPlane), |
- frame->stride(media::VideoFrame::kVPlane), |
- static_cast<uint8*>(pixmap.writable_addr()), |
- pixmap.width() * 4, pixmap.width(), pixmap.height()); |
+ const uint32 destination_pixel_format = |
+ (kN32_SkColorType == kRGBA_8888_SkColorType) ? libyuv::FOURCC_ABGR |
+ : libyuv::FOURCC_ARGB; |
+ |
+ libyuv::ConvertFromI420(frame->visible_data(media::VideoFrame::kYPlane), |
+ frame->stride(media::VideoFrame::kYPlane), |
+ frame->visible_data(media::VideoFrame::kUPlane), |
+ frame->stride(media::VideoFrame::kUPlane), |
+ frame->visible_data(media::VideoFrame::kVPlane), |
+ frame->stride(media::VideoFrame::kVPlane), |
+ static_cast<uint8*>(pixmap.writable_addr()), |
+ pixmap.width() * 4, pixmap.width(), pixmap.height(), |
+ destination_pixel_format); |
if (frame->format() == media::PIXEL_FORMAT_YV12A) { |
DCHECK(!info.isOpaque()); |