| Index: content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
|
| diff --git a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
|
| index 3fcba612d8f3b9ae7473308306e371965c2effdf..547002a103a0db37d5d348d21c5a13746ac8cb3e 100644
|
| --- a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
|
| +++ b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
|
| @@ -433,6 +433,43 @@ void V4L2SliceVideoDecodeAccelerator::NotifyError(Error error) {
|
| }
|
| }
|
|
|
| +// static
|
| +std::vector<media::VideoDecodeAccelerator::SupportedProfile>
|
| +V4L2SliceVideoDecodeAccelerator::GetSupportedProfiles() {
|
| + std::vector<SupportedProfile> profiles;
|
| + scoped_refptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kDecoder);
|
| + if (!device)
|
| + return profiles;
|
| +
|
| + 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) {
|
| + switch (fmtdesc.pixelformat) {
|
| + case V4L2_PIX_FMT_H264_SLICE:
|
| + profile.profile = media::H264PROFILE_MAIN;
|
| + profiles.push_back(profile);
|
| + break;
|
| + case V4L2_PIX_FMT_VP8_FRAME:
|
| + profile.profile = media::VP8PROFILE_ANY;
|
| + profiles.push_back(profile);
|
| + break;
|
| + }
|
| + }
|
| +
|
| + return profiles;
|
| +}
|
| +
|
| bool V4L2SliceVideoDecodeAccelerator::Initialize(
|
| media::VideoCodecProfile profile,
|
| VideoDecodeAccelerator::Client* client) {
|
|
|