The first patch allows GpuVideoDecoder to actually get created. Without it chrome://gpu report hardware video acceleration is enabled, but actually ffmpegVideoDecoder is used for the decode.
The second adds NV12 & YVU420 formats for all ARM platforms, otherwise V4L2 VDA on dragonboard will error with NV12 buffers. Signed-off-by: Peter Griffin <[email protected]> --- ...2_device-allow-NV12-YVU420-on-all-ARM-pla.patch | 26 +++++++++++ ...lt_decoder_factory-create-GpuVideoDecoder.patch | 51 ++++++++++++++++++++++ .../chromium-ozone-wayland_72.0.3626.121.bb | 2 + 3 files changed, 79 insertions(+) create mode 100644 recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch create mode 100644 recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch diff --git a/recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch b/recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch new file mode 100644 index 0000000..20c2ae4 --- /dev/null +++ b/recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch @@ -0,0 +1,26 @@ +From 676525a5cc0e5cc38ef59306413365811ee051ce Mon Sep 17 00:00:00 2001 +From: Peter Griffin <[email protected]> +Date: Fri, 15 Mar 2019 22:49:11 +0100 +Subject: [PATCH] generic_v4l2_device: allow NV12 & YVU420 on all ARM platforms + +Signed-off-by: Peter Griffin <[email protected]> +--- + media/gpu/v4l2/generic_v4l2_device.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/media/gpu/v4l2/generic_v4l2_device.cc b/media/gpu/v4l2/generic_v4l2_device.cc +index a1294ae0b..2b587ca 100644 +--- a/media/gpu/v4l2/generic_v4l2_device.cc ++++ b/media/gpu/v4l2/generic_v4l2_device.cc +@@ -200,7 +200,7 @@ std::vector<base::ScopedFD> GenericV4L2Device::GetDmabufsForV4L2Buffer( + bool GenericV4L2Device::CanCreateEGLImageFrom(uint32_t v4l2_pixfmt) { + static uint32_t kEGLImageDrmFmtsSupported[] = { + DRM_FORMAT_ARGB8888, +-#if defined(ARCH_CPU_ARMEL) ++#if defined(ARCH_CPU_ARM_FAMILY) + DRM_FORMAT_NV12, + DRM_FORMAT_YVU420, + #endif +-- +2.7.4 + diff --git a/recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch b/recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch new file mode 100644 index 0000000..d66abae --- /dev/null +++ b/recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch @@ -0,0 +1,51 @@ +From 527edf2f2240f33df3c5a946185a1db771430eed Mon Sep 17 00:00:00 2001 +From: Peter Griffin <[email protected]> +Date: Fri, 15 Mar 2019 15:44:06 +0100 +Subject: [PATCH 1/2] media: default_decoder_factory: create GpuVideoDecoder if + mojo disabled + +Despite chrome://gpu showing video acceleration is enabled, the +GpuVideoDecoder never actually gets created without this change +applied. + +With this patch applied, VDA is created and used when playing back +video. + +Signed-off-by: Peter Griffin <[email protected]> +--- + media/renderers/default_decoder_factory.cc | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/media/renderers/default_decoder_factory.cc b/media/renderers/default_decoder_factory.cc +index 1229941..a71efb7 100644 +--- a/media/renderers/default_decoder_factory.cc ++++ b/media/renderers/default_decoder_factory.cc +@@ -86,7 +86,6 @@ void DefaultDecoderFactory::CreateVideoDecoders( + video_decoders->push_back( + std::make_unique<DecryptingVideoDecoder>(task_runner, media_log)); + #endif +- + // Perfer an external decoder since one will only exist if it is hardware + // accelerated. + // Remember that |gpu_factories| will be null if HW video decode is turned +@@ -97,14 +96,12 @@ void DefaultDecoderFactory::CreateVideoDecoders( + // factories, require that their message loops are identical. + DCHECK_EQ(gpu_factories->GetTaskRunner(), task_runner); + +- if (external_decoder_factory_) { ++ // MojoVideoDecoder replaces any VDA for this platform when it's enabled. ++ if (external_decoder_factory_ && base::FeatureList::IsEnabled(media::kMojoVideoDecoder)) { + external_decoder_factory_->CreateVideoDecoders( + task_runner, gpu_factories, media_log, request_overlay_info_cb, + target_color_space, video_decoders); +- } +- +- // MojoVideoDecoder replaces any VDA for this platform when it's enabled. +- if (!base::FeatureList::IsEnabled(media::kMojoVideoDecoder)) { ++ } else { + video_decoders->push_back(std::make_unique<GpuVideoDecoder>( + gpu_factories, request_overlay_info_cb, target_color_space, + media_log)); +-- +2.7.4 + diff --git a/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb b/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb index 6765e7e..6208809 100644 --- a/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb +++ b/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb @@ -38,6 +38,8 @@ SRC_URI += " \ file://0033-ozone-wayland-Fix-software-rendering.patch \ file://0034-ozone-wayland-Return-primary-display-on-null-window.patch \ file://0035-ozone-Implement-single-window-tab-dragging.patch \ + file://0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch \ + file://0001-media-default_decoder_factory-create-GpuVideoDecoder.patch \ " # Chromium can use v4l2 device for hardware accelerated video decoding. Make sure that -- 2.7.4 -- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
