ffmpeg-v4l2-request-fourier: patch NV15→P010 unpack for Hi10P / Main10
The n8.1 pin's hwcontext_v4l2request.c deliberately blanks the transfer-formats list for AV_PIX_FMT_YUV420P10 sw_format (the mapping target for V4L2_PIX_FMT_NV15), so `ffmpeg -hwaccel v4l2request -vf hwdownload,format=p010le` on a Hi10P / Main10 input failed at filter-init with -22 EINVAL — even though kernel-side decode succeeded. 0002-nv15-to-p010-unpack.patch adds an inline NV15→P010 unpack (5 bytes per 4 samples, little-endian → high-10-of-16) inside v4l2request_transfer_data_from, exposes AV_PIX_FMT_P010 in transfer_get_formats for that sw_format, and rejects non-P010 destinations explicitly with ENOSYS instead of silently corrupting output via av_frame_copy on NV15-packed bytes. Verified on fresnel (RK3399, linux-fresnel-fourier 7.0-14): - 5-frame smoke test from issue #21 → exit 0, 13.8MB output - 20-frame mid-fixture decode → bit-exact HW==SW sha256 7d9b66d48d8f17b2281da1881c663ecc31722bb218aba1ae23bf28d07aa66b08 - 8-bit baseline (bbb_60s_720p.h264.mp4) still bit-exact HW==SW (no regression in the existing NV12 path) - Cross-device repro of original EINVAL on unpatched ampere (RK3588) pkgrel=4, confirming the bug is upstream-FFmpeg-side, not RK3399-specific Patch is upstream-able to Kwiboo's v4l2-request-n8.1 branch. Closes #21.
This commit is contained in:
@@ -24,7 +24,7 @@ _srcname=FFmpeg
|
||||
_version='8.1'
|
||||
_commit='b57fbbe50c9b2656fad86a1a7eeabfd2b2a50935' # v4l2-request-n8.1 tip 2026-04-24
|
||||
pkgver=8.1.r123329.b57fbbe
|
||||
pkgrel=4
|
||||
pkgrel=5
|
||||
epoch=2
|
||||
pkgdesc='FFmpeg with V4L2 Request API hwaccel (Rockchip / Allwinner stateless decode)'
|
||||
arch=('aarch64')
|
||||
@@ -78,8 +78,9 @@ provides=(
|
||||
conflicts=(ffmpeg)
|
||||
replaces=(ffmpeg ffmpeg-v4l2-request-git)
|
||||
source=("git+https://github.com/Kwiboo/FFmpeg.git#commit=${_commit}"
|
||||
'0001-libudev-bypass-fallback.patch')
|
||||
sha256sums=('SKIP' 'SKIP')
|
||||
'0001-libudev-bypass-fallback.patch'
|
||||
'0002-nv15-to-p010-unpack.patch')
|
||||
sha256sums=('SKIP' 'SKIP' 'SKIP')
|
||||
|
||||
pkgver() {
|
||||
cd "${_srcname}"
|
||||
@@ -91,6 +92,7 @@ pkgver() {
|
||||
prepare() {
|
||||
cd "${_srcname}"
|
||||
patch -Np1 -i "${srcdir}/0001-libudev-bypass-fallback.patch"
|
||||
patch -Np1 -i "${srcdir}/0002-nv15-to-p010-unpack.patch"
|
||||
}
|
||||
|
||||
build() {
|
||||
|
||||
Reference in New Issue
Block a user