Skip to content

chromium: Add v4l2 m2m stateless decode configuration options #864

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion meta-chromium/recipes-browser/chromium/chromium-gn.inc
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ BUILD_CC:toolchain-clang = "clang"
BUILD_CXX:toolchain-clang = "clang++"
BUILD_LD:toolchain-clang = "clang"

PACKAGECONFIG ??= "upower use-egl"
PACKAGECONFIG ??= "upower use-egl use-v4l2"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I believe that you could add the UDEV rules together with the support, so this works out of box whenever someone enables it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@otavio those udev rules should be in BSP layer (temporarily, read on ...), since they are SoC specific and this layer cannot predict what the BSP layers are doing with udev rules.

There is already an ongoing work in chromium upstream to use the proper /dev/videoN and /dev/mediaN nodes , I think that is going to land in chromium 132 or 133 , at which point the udev rules won't be needed at all.

So no, I don't think this layer should be adding any udev rules. The udev rules in the commit message are an example for one specific SoC.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree it usually fits in the BSP layer. Since it's harmless, adding the rules for other processors, too, could be a great idea. We can install them without any conditions. They won't have any impact if used with a different processor so that it wouldn't cause any issues.

Also, I appreciate your argument about using proper device names and how those rules may not be needed shortly. That's another good reason why this might be a better fit here.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@marex we are now at 132.0.6834.83, I wonder if we should land this PR now

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kraj I think yes , I already rebased it last month and dropped the udev rules part .


# this makes sure the dependencies for the EGL mode are present; otherwise, the configure scripts
# automatically and silently fall back to GLX
Expand Down Expand Up @@ -146,6 +146,10 @@ PACKAGECONFIG[upower] = ",,,upower"
# but remember to also use proprietary codecs so that H.264 is supported. Also note
# that not all the hardware configs might be supported.
PACKAGECONFIG[use-vaapi] = "use_vaapi=true use_libgav1_parser=true,use_vaapi=false,libva"
# Enable stateless V4L2 M2M video decoding support.
# This requires 'proprietary-codecs' PACKAGECONFIG
# to decode h264 streams on the V4L2 M2M device.
PACKAGECONFIG[use-v4l2] = "use_v4l2_codec=true,use_v4l2_codec=false"

# Base GN arguments, mostly related to features we want to enable or disable.
GN_ARGS = " \
Expand Down Expand Up @@ -363,6 +367,7 @@ CHROMIUM_EXTRA_ARGS ?= " \
${@bb.utils.contains('PACKAGECONFIG', 'use-egl', '--use-angle=gles-egl', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'kiosk-mode', '--kiosk --no-first-run --incognito', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'gtk4', '--gtk-version=4', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'use-v4l2', '--ozone-platform-hint=wayland --enable-features=AcceleratedVideoDecoder,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL', '', d)} \
"

# V8's JIT infrastructure requires binaries such as mksnapshot and
Expand Down