diff options
Diffstat (limited to 'chromium/media/capture/video/win/video_capture_device_win.cc')
-rw-r--r-- | chromium/media/capture/video/win/video_capture_device_win.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/chromium/media/capture/video/win/video_capture_device_win.cc b/chromium/media/capture/video/win/video_capture_device_win.cc index 53f44af0164..5f6d211a2f4 100644 --- a/chromium/media/capture/video/win/video_capture_device_win.cc +++ b/chromium/media/capture/video/win/video_capture_device_win.cc @@ -857,6 +857,11 @@ void VideoCaptureDeviceWin::FrameReceived(const uint8_t* buffer, if (timestamp == kNoTimestamp) timestamp = base::TimeTicks::Now() - first_ref_time_; + // We always calculate camera rotation for the first frame. We also cache the + // latest value to use when AutoRotation is turned off. + if (!camera_rotation_.has_value() || IsAutoRotationEnabled()) + camera_rotation_ = GetCameraRotation(device_descriptor_.facing); + // TODO(julien.isorce): retrieve the color space information using the // DirectShow api, AM_MEDIA_TYPE::VIDEOINFOHEADER2::dwControlFlags. If // AMCONTROL_COLORINFO_PRESENT, then reinterpret dwControlFlags as a @@ -864,8 +869,8 @@ void VideoCaptureDeviceWin::FrameReceived(const uint8_t* buffer, // DXVA_VideoTransferMatrix, DXVA_VideoTransferFunction and // DXVA_NominalRangeto build a gfx::ColorSpace. See http://crbug.com/959992. client_->OnIncomingCapturedData(buffer, length, format, gfx::ColorSpace(), - GetCameraRotation(device_descriptor_.facing), - flip_y, base::TimeTicks::Now(), timestamp); + camera_rotation_.value(), flip_y, + base::TimeTicks::Now(), timestamp); while (!take_photo_callbacks_.empty()) { TakePhotoCallback cb = std::move(take_photo_callbacks_.front()); |