8756ce38be
build and publish packages / distcc-avahi-aarch64 (push) Successful in 46s
build and publish packages / lmcp-any (push) Successful in 9s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 12m8s
build and publish packages / claude-his-debian (push) Successful in 5s
chromium-fourier: - patch 3/3 nv12-external-oes-on-modifier-external-only.patch — adds NativePixmapEGLBinding::ModifierRequiresExternalOES helper, extends OzoneImageGLTexturesHolder::GetBinding to honor EGL external_only flag for NV12 dmabufs on panfrost / panthor. Validated on ohm (RK3566 hantro mainline 6.19.10): bbb_1080p30_h264.mp4 plays at 34.7 % combined CPU vs ~131 % pre-patch baseline (~3.8x). - PKGBUILD pkgrel 1->2, source array + sha256sums + prepare() hook for patch 4, patch numbering 1/2,2/2 -> 1/3,2/3,3/3. - NEXT.md appended with 2026-04-28 section: patch 4 design, validation log, KWin GL_ALPHA bug pinpoint (preexisting since 2026-03-06, affects every wayland video client; unrelated to chromium-fourier), device-renumbering note (/dev/video1 = encoder post-reboot). - KWIN_PIVOT.md: 4-phase plan to identify and patch KWin's glTexImage2D(internalFormat=GL_ALPHA) site, ohm-only test plan, scope discipline. - patches/ now tracked (compiler-rt-adjust-paths, enable-v4l2, wayland-allow-direct-egl-gles2, nv12-external-oes); the dead-end chromeos-pipeline-bypass.patch removed. firefox-fourier: - 4 patches (gfxinfo v4l2 stateless fourccs, libwrapper hwdevice ctx, ffmpegvideo v4l2-request route, prefs v4l2-request default). - PKGBUILD bumped to firefox 150.0.1, Arch toolchain glue patches layered in, mozconfig with --without-wasm-sandboxed-libraries for ALARM, package() launcher fix (rm -f symlink before cat > to avoid ENOENT through the dangling /usr/local symlink mach install drops). - 150.0.1-1-aarch64.pkg.tar.zst built on boltzmann (95 MB), pending fresnel power-on for V4L2 stateless validation on RK3399.
53 lines
2.6 KiB
Diff
53 lines
2.6 KiB
Diff
From: Markus Fritsche <mfritsche@reauktion.de>
|
||
Subject: [PATCH 2/4] dom/media/platforms/ffmpeg: wrap
|
||
av_hwdevice_ctx_create
|
||
Date: 2026-04-27
|
||
|
||
Background
|
||
----------
|
||
`FFmpegLibWrapper` already wraps `av_hwdevice_ctx_alloc` (no device
|
||
path) and `av_hwdevice_ctx_init`, used by the VAAPI codepath which
|
||
discovers the DRM device implicitly. The v4l2_request hwaccel needs
|
||
the *path-aware* constructor `av_hwdevice_ctx_create`, which lets the
|
||
caller pass `"/dev/dri/renderD128"` (or similar) directly when
|
||
creating an `AV_HWDEVICE_TYPE_DRM` context. libavcodec then binds the
|
||
v4l2_request hwaccel internally based on the codec's `hw_configs`.
|
||
|
||
This patch adds the function pointer + the `AV_FUNC_OPTION_SILENT`
|
||
registration. Same versioning as the other `av_hwdevice_ctx_*`
|
||
wrappers (libavutil 58–62). No callers yet — patch 3/4
|
||
(FFmpegVideoDecoder routing) consumes it.
|
||
|
||
Bug 1969297.
|
||
|
||
diff --git a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h
|
||
--- a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h
|
||
+++ b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h
|
||
@@ -177,6 +177,11 @@
|
||
// libavutil >= 58
|
||
AVBufferRef* (*av_hwdevice_ctx_alloc)(int);
|
||
int (*av_hwdevice_ctx_init)(AVBufferRef* ref);
|
||
+ // firefox-fourier: device-path-aware constructor needed to bind a
|
||
+ // DRM hwdevice (AV_HWDEVICE_TYPE_DRM) to /dev/dri/renderD* for the
|
||
+ // libavcodec v4l2_request hwaccel.
|
||
+ int (*av_hwdevice_ctx_create)(AVBufferRef** device_ctx, int type,
|
||
+ const char* device, void* opts, int flags);
|
||
AVBufferRef* (*av_hwframe_ctx_alloc)(AVBufferRef* device_ctx);
|
||
int (*av_hwframe_ctx_init)(AVBufferRef* ref);
|
||
AVBufferRef* (*av_buffer_ref)(AVBufferRef* buf);
|
||
diff --git a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
|
||
--- a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
|
||
+++ b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
|
||
@@ -293,6 +293,11 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() {
|
||
AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 |
|
||
AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 |
|
||
AV_FUNC_AVUTIL_62)
|
||
+ // firefox-fourier: see comment in FFmpegLibWrapper.h
|
||
+ AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_create,
|
||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 |
|
||
+ AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 |
|
||
+ AV_FUNC_AVUTIL_62)
|
||
AV_FUNC_OPTION_SILENT(
|
||
av_buffer_ref, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 |
|
||
AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)
|