Chromium Code Reviews| Index: content/common/gpu/media/v4l2_video_decode_accelerator.cc |
| diff --git a/content/common/gpu/media/v4l2_video_decode_accelerator.cc b/content/common/gpu/media/v4l2_video_decode_accelerator.cc |
| index 186d92086e776d78da2ace497b82718bb0206e29..cc0724aa71a1b4f6f630c757477bdee5ec83a384 100644 |
| --- a/content/common/gpu/media/v4l2_video_decode_accelerator.cc |
| +++ b/content/common/gpu/media/v4l2_video_decode_accelerator.cc |
| @@ -454,18 +454,13 @@ V4L2VideoDecodeAccelerator::GetSupportedProfiles() { |
| SupportedProfile profile; |
| profile.min_resolution.SetSize(16, 16); |
| - // NOTE: additional autodetection logic may require updating input buffer size |
| - // selection. |
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| - switches::kIgnoreResolutionLimitsForAcceleratedVideoDecode)) |
| - profile.max_resolution.SetSize(4096, 2160); |
| - else |
| - profile.max_resolution.SetSize(1920, 1088); |
| - |
| v4l2_fmtdesc fmtdesc; |
| memset(&fmtdesc, 0, sizeof(fmtdesc)); |
| fmtdesc.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; |
| for (; device->Ioctl(VIDIOC_ENUM_FMT, &fmtdesc) == 0; ++fmtdesc.index) { |
| + // Get maximum resolution for each format |
|
Pawel Osciak
2015/04/22 08:50:56
Ditto.
henryhsu
2015/04/23 03:56:43
Done.
|
| + profile.max_resolution = device->GetMaxSupportedResolution( |
| + fmtdesc.pixelformat); |
| switch (fmtdesc.pixelformat) { |
| case V4L2_PIX_FMT_H264: |
| for (uint32 media_profile = media::H264PROFILE_MIN; |
| @@ -1799,8 +1794,9 @@ bool V4L2VideoDecodeAccelerator::SetupFormats() { |
| } |
| size_t input_size; |
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| - switches::kIgnoreResolutionLimitsForAcceleratedVideoDecode)) |
| + gfx::Size max_resolution = device_->GetMaxSupportedResolution( |
| + input_format_fourcc); |
| + if (max_resolution.width() >= 4096 && max_resolution.height() >= 2160) |
| input_size = kInputBufferMaxSizeFor4k; |
| else |
| input_size = kInputBufferMaxSizeFor1080p; |