On Tue, 20 Jan 2026 14:07:21 +0000
Peter van den Houten via ffmpeg-user <[email protected]> wrote:
> On 19/01/2026 21:27, David Niklas via ffmpeg-user wrote:
> > On Mon, 19 Jan 2026 16:51:30 +0000
> > Peter van den Houten via ffmpeg-user<[email protected]> wrote:
> >  
> >> On 17/01/2026 17:52, David Niklas via ffmpeg-user wrote:  
> >>> On Sat, 17 Jan 2026 09:51:08 +0000
> >>> Peter van den Houten via ffmpeg-user<[email protected]> wrote:
> >>>  
> >>>> On 16/01/2026 18:01, David Niklas via ffmpeg-user wrote:  
> >>>>> Hello,
> >>>>> I'm trying to encode a 4K video with ffmpeg. The QSV encoder will
> >>>>> not initialize.
> >>>>>
> >>>>> I've tried searching online, but all I can find is that my syntax
> >>>>> might be incorrect. I have tried to read the ffmpeg wiki, but it
> >>>>> doesn't explain what to use nor how to use it. The provided
> >>>>> examples in the wiki fail with the exact same errors as below.
> >>>>>
> >>>>> Any ideas?
> >>>>> Thanks!
> >>>>>
> >>>>>
> >>>>> % ffprobe tmp.mp4
> >>>>> <snip reason=Duplicate version info.">
> >>>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'tmp.mp4':
> >>>>>      Metadata:
> >>>>>        major_brand     : isom
> >>>>>        minor_version   : 512
> >>>>>        compatible_brands: isomiso2avc1mp41
> >>>>>        encoder         : Lavf62.3.100
> >>>>>      Duration: 00:03:15.79, start: 0.000000, bitrate: 36078 kb/s
> >>>>>      Stream #0:0[0x1](eng): Video: h264 (High) (avc1 /
> >>>>> 0x31637661), yuvj420p(pc, bt709, progressive), 3840x2160, 35970
> >>>>> kb/s, 30 fps, 30 tbr, 90k tbn (default) Metadata: handler_name
> >>>>> : VideoHandle vendor_id       : [0][0][0][0]
> >>>>>        Side data:
> >>>>>          displaymatrix: rotation of -180.00 degrees
> >>>>>
> >>>>>
> >>>>> % ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -i tmp.mp4
> >>>>> -c:v vp9_qsv -b:v 2M -preset veryslow vp9_qsv.webm ffmpeg version
> >>>>> 8.0 Copyright (c) 2000-2025 the FFmpeg developers built with gcc
> >>>>> 12 (Debian 12.2.0-14+deb12u1) configuration: --prefix=/usr/local
> >>>>> --enable-gpl --enable-version3 --enable-nonfree --enable-gray
> >>>>> --enable-doc --enable-alsa --enable-chromaprint --enable-frei0r
> >>>>> --enable-gmp --enable-ladspa --enable-lcms2 --enable-libaom
> >>>>> --enable-libaribb24 --enable-libass --enable-libbluray
> >>>>> --enable-libbs2b --enable-libcaca --enable-libcdio
> >>>>> --enable-libcodec2 --enable-libdav1d --enable-libdavs2
> >>>>> --enable-libdvdnav --enable-libdvdread --enable-libflite
> >>>>> --enable-libfontconfig --enable-libfreetype --enable-libharfbuzz
> >>>>> --enable-libglslang --enable-libgme --enable-libgsm
> >>>>> --enable-libilbc --enable-libjack --enable-libjxl
> >>>>> --enable-libkvazaar --enable-libmodplug --enable-libmp3lame
> >>>>> --enable-liboapv --enable-libopencore-amrnb
> >>>>> --enable-libopencore-amrwb --enable-libopenh264
> >>>>> --enable-libopenjpeg --enable-libopenmpt --enable-libopus
> >>>>> --enable-libqrencode --enable-librabbitmq --enable-librav1e
> >>>>> --enable-librist --enable-librsvg --enable-librubberband
> >>>>> --enable-librtmp --enable-libshine --enable-libsnappy --enable-
> >>>>> libsoxr --enable-libspeex --enable-libsrt --enable-libssh
> >>>>> --enable-libsvtav1 --enable-libtesseract --enable-libtheora
> >>>>> --enable-libtwolame --enable-libuavs3d --enable-libv4l2
> >>>>> --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis
> >>>>> --enable-libvpx --enable-libvvenc --enable-libwebp
> >>>>> --enable-libx264 --enable-libx265 --enable-libxeve
> >>>>> --enable-libxevd --enable-libxavs --enable-libxavs2
> >>>>> --enable-libxvid --enable-libxml2 --enable-libzimg
> >>>>> --enable-libzmq --enable-libzvbi --enable-lv2 --enable-lzma
> >>>>> --enable-libmysofa --enable-openal --enable-opencl
> >>>>> --enable-opengl --enable-openssl --enable-pocketsphinx
> >>>>> --enable-sndio --enable-sdl2 --enable-vapoursynth --enable-libvpl
> >>>>> --enable-v4l2-m2m --disable-stripping --cpu=native
> >>>>> --target-os=linux --enable-shared libavutil      60.  8.100 / 60.
> >>>>> 8.100 libavcodec     62. 11.100 / 62. 11.100 libavformat    62.
> >>>>> 3.100 / 62.  3.100 libavdevice    62. 1.100 / 62.  1.100
> >>>>> libavfilter    11.  4.100 / 11.  4.100 libswscale 9.  1.100 /  9.
> >>>>> 1.100 libswresample   6.  1.100 /  6.  1.100 [QSV @
> >>>>> 0x55c48ea44440] No supported child device type is enabled Device
> >>>>> creation failed: -38. Failed to set value 'qsv=hw' for option
> >>>>> 'init_hw_device': Function not implemented Error parsing global
> >>>>> options: Function not implemented  
> >>>> Hey David
> >>>>
> >>>> What version is your Intel CPU?  
> >>> I gave you the model number in the title (265K), so I'm uncertain
> >>> what you're interested in, specifically. Here's the first listing of
> >>> /proc/cpuinfo, if it helps:
> >>>
> >>> %  less /proc/cpuinfo
> >>> processor       : 0
> >>> vendor_id       : GenuineIntel
> >>> cpu family      : 6
> >>> model           : 198
> >>> model name      : Intel(R) Core(TM) Ultra 7 265K
> >>> stepping        : 2
> >>> microcode       : 0x119
> >>> cpu MHz         : 800.095
> >>> cache size      : 30720 KB
> >>> physical id     : 0
> >>> siblings        : 20
> >>> core id         : 0
> >>> cpu cores       : 20
> >>> apicid          : 0
> >>> initial apicid  : 0
> >>> fpu             : yes
> >>> fpu_exception   : yes
> >>> cpuid level     : 35
> >>> wp              : yes
> >>> flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
> >>> pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
> >>> pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs
> >>> bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf
> >>> tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2
> >>> ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt
> >>> tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm
> >>> 3dnowprefetch cpuid_fault ssbd ibrs ibpb stibp ibrs_enhanced
> >>> tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1
> >>> avx2 smep bmi2 erms invpcid rdt_a rdseed adx smap clflushopt clwb
> >>> intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect
> >>> user_shstk avx_vnni lam wbnoinvd dtherm ida arat pln pts hwp
> >>> hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi vnmi umip pku
> >>> ospke waitpkg gfni vaes vpclmulqdq rdpid bus_lock_detect movdiri
> >>> movdir64b fsrm md_clear serialize arch_lbr ibt flush_l1d
> >>> arch_capabilities vmx flags : vnmi preemption_timer posted_intr
> >>> invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset
> >>> vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple
> >>> shadow_vmcs pml ept_violation_ve ept_mode_based_exec tsc_scaling
> >>> usr_wait_pause notify_vm_exiting ipi_virt bugs            :
> >>> spectre_v1 spectre_v2 spec_store_bypass swapgs bhi bogomips
> >>> : 7759.00 clflush size    : 64 cache_alignment : 64 address sizes
> >>> : 46 bits physical, 48 bits virtual power management:
> >>>
> >>>  
> >>>   >>>> I've not been able to solve this problem using the qsv API,
> >>>   >>>> only  
> >>>> using -hwaccel vaapi or -hwaccel cuda (if you have a Nvidia GPU).
> >>>> There appears to be some confusion as to which Intel GPU version
> >>>> supports the FFmpeg qsv API and how this is implemented.  
> >>> Yeah, I kinda noticed that.  
> >>>   >>>> Also, the h.266 encoder, enabled via your libvvenc, will not
> >>>   >>>> encode  
> >>>> with Quick Sync and libvvdec will only work with the very latest
> >>>> Intel CPU/GPUs.
> >>>>
> >>>> Cheers Peter  
> >>> Well, the 265K is the very latest -- unless you're referring to the
> >>> paper launched laptop CPUs from intel at CES.
> >>>
> >>> Thanks,
> >>> David  
> >>>   >> Apologies for missing the Intel 265K in the subject line; my
> >>>   >> brain  
> >> quickly tabbed to the body of the email at "Cannot use QSV."
> >>
> >> I use a Nvidia GPU for encoding workflows but since my Debian FFmpeg
> >> machine (GIT build with --enable-libvpl, the latest Intel
> >> incantation) has a Xeon CPU supporting QSV, I thought I might be
> >> able to add another decoding/encoding instance using QSV.
> >>
> >> Several years back, I successfully used FFmpeg with QSV on an old
> >> borrowed _Windows_ laptop; this is making me think that the problem
> >> is Linux driver related, as you are also having problems with a very
> >> modern CPU (albeit with a different error message):
> >>
> >>    "No supported child device type is enabled Device creation failed:
> >> -38" vs my "Error creating a MFX session: -9").
> >>
> >> Another caveat is that HandBrake also reports that QSV is missing,
> >> although it also uses some of the same libraries as FFmpeg, so that
> >> may still be a factor.
> >>
> >> I don't have a physical Windows platform available to test the latest
> >> FFmpeg, only Windows VMs and they do not pass through the Intel GPU.
> >>
> >> This is the beginning of the command that I successfully used on the
> >> physical Windows platform. Some of these options might not work/be
> >> invalid with the latest FFmpeg:
> >>
> >> ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -hwaccel qsv
> >> -hwaccel_output_format qsv
> >>
> >> Lastly, according to the QSV encoding/decoding compatibility chart,
> >> your CPU (Arrow Lake) is not supported for VVC. This chart may be out
> >> of date but there are so many conflicting resources and no definitive
> >> answers, I'm not sure any longer:
> >>
> >> https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video
> >>  
> > Hello,
> > First of all, I'd like to point out that I'm trying to encode VP9
> > *not* VVC. If you read my original email, quoted above, you'll see
> > that.
> >
> > The wikipedia article says that QSV is run via vaapi. When I compiled
> > ffmpeg, I encountered several errors trying to build the various
> > features. I reported opencv as not compiling, but got no answers. I
> > didn't want to overload the ML, so I didn't bother with the others,
> > like vaapi.
> >
> > Vaapi doesn't build because my Devuan (Debian) system /usr/include
> > doesn't have stdbit.h.
> > The ffmpeg source has it in compat/stdbit/stdbit.h .
> >
> > Below is the exact error.
> >
> > Any ideas on how to resolve this? I have build-essential installed as
> > well as pretty much every dependency I could find with ./configure.
> >
> > Thanks!
> >
> > PS: Yes, I did read INSTALL.md. It didn't mention any dependencies.
> >
> >
> >
> > gcc -D_ISOC11_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
> > -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -O2 -mtune=native
> > -march=native -march=native -std=c17 -fomit-frame-pointer -fPIC
> > -pthread -I/usr/local/include/oapv -I/usr/include/lilv-0
> > -I/usr/include/serd-0 -I/usr/include/sord-0 -I/usr/include/sratom-0
> > -I/usr/include/freetype2 -I/usr/include/libpng16
> > -I/usr/include/harfbuzz -I/usr/include/glib-2.0
> > -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/fribidi
> > -I/usr/include/libxml2 -I/usr/include/freetype2
> > -I/usr/include/libpng16 -I/usr/include/bs2b -I/usr/local/include
> > -I/usr/include/libdrm -I/usr/include/freetype2
> > -I/usr/include/libpng16 -I/usr/include/freetype2
> > -I/usr/include/libpng16 -I/usr/include/harfbuzz
> > -I/usr/include/freetype2 -I/usr/include/libpng16
> > -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
> > -DHWY_SHARED_DEFINE -I/usr/local/include
> > -I/usr/lib/x86_64-linux-gnu/pkgconfig/../../../include
> > -I/usr/lib/x86_64-linux-gnu/pkgconfig/../../../include/vpl
> > -DMFX_DEPRECATED_OFF -I/usr/include/openjpeg-2.5
> > -I/usr/include/x86_64-linux-gnu -I/usr/include/opus
> > -I/usr/include/opus -I/usr/include/rav1e -I/usr/include/librsvg-2.0
> > -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
> > -I/usr/include/libmount -I/usr/include/blkid
> > -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16
> > -I/usr/include/x86_64-linux-gnu -I/usr/include/webp -pthread
> > -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2
> > -I/usr/include/p11-kit-1 -I/usr/include/srt -I/usr/include/svt-av1
> > -DEB_DLL -I/usr/include/leptonica -I/usr/local/include
> > -I/usr/local/include -I/usr/include/webp -I/usr/include/webp
> > -DX264_API_IMPORTS -I/usr/local/include -I/usr/local/include/xevd
> > -I/usr/local/include/xeve -isystem /usr/include/mit-krb5
> > -I/usr/include/pgm-5.3 -I/usr/include/libxml2 -I/usr/include/libxml2
> > -I/usr/include/AL -I/usr/include/sphinxbase
> > -I/usr/include/pocketsphinx -I/usr/include/x86_64-linux-gnu
> > -I/usr/include/x86_64-linux-gnu/sphinxbase -I/usr/include/libdrm -g
> > -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls
> > -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes
> > -Wstrict-prototypes -Wempty-body -Wno-parentheses -Wno-switch
> > -Wno-format-zero-length -Wno-pointer-sign -Wno-unused-const-variable
> > -Wno-bool-operation -Wno-char-subscripts -O3 -fno-math-errno
> > -fno-signed-zeros -fno-tree-vectorize -Werror=format-security
> > -Werror=implicit-function-declaration -Werror=missing-prototypes
> > -Werror=return-type -Werror=vla -Wformat -fdiagnostics-color=auto
> > -Wno-maybe-uninitialized -c -o /tmp/ffconf.GB4dpkT1/test.o
> > /tmp/ffconf.GB4dpkT1/test.c /tmp/ffconf.GB4dpkT1/test.c:1:10: fatal
> > error: stdbit.h: No such file or directory 1 | #include <stdbit.h> |
> >         ^~~~~~~~~~ compilation terminated. ERROR: vaapi requested but
> > not found  
> 
> 
> 1) Regarding VVC, I originally read your FFmpeg VP9 command but was
> simply pointing out that including "--enable-libvvenc" in your
> ./configure when using the Intel QSV core was redundant, as currently,
> QSV only decodes. Obviously it will work with the Intel CPU cores. I
> haven't tried VVC for a while, as it was painfully slow using the
> required FFmpeg patch a few years back.

Well, I was planning on doing VVC SW encode, so I think that I do need the
library...

> Just tried it with the latest builds and is still pedestrian using my
> Xeon CPU cores - and there is no Nvidia or AMD encoder support planned,
> never mind the fact that few media players provide support. However,
> the file size change is impressive. How is the encoding performance on
> your 265K?

Regarding the speed, it depends on the preset you choose. Feeding in a 4K
clip and running ffmpeg on the 12 E-cores with the tier set to high, I'm
seeing a speed equal to:
faster: 0.35x
medium: 0.055x
slower: 0.00785x

Because the P-cores are fewer in number, running it on them is actually
slower than using the E-cores.

Please note that the slower preset consumes 9.5GB of memory. So even if
you can encode in vvc using your CPU, you may not want to do so because
you don't have enough RAM for other tasks.

Comparatively, libx264 placebo consumes 6GB and libx265 placebo consumes
5GB of RAM. libvpx-vp9 is surprisingly memory efficient at only 2GB of
RAM using it's slowest settings (-deadline best -speed 0 -row-mt 1) but it
eats CPU at a speed of just 0.0335x when offered all 12 of my E-cores. I
say offered, because it's actually using between 3 and 8 of them, which
is weird.

> 2) Using "-hwaccel vaapi" works for decoding but as soon as I add one
> of the QSV encoders like "-c:v:0 hevc_qsv" it fails, hence this ongoing
> thread and the utter confusion in trying to get it to work under Linux.

Got it.

> 3) I played around with stdbit.h and I'm puzzled as to why your build
> is ignoring FFmpeg's compat/stdbit/stdbit.h
> 
> To test, I moved mine away, causing the build to fail, then added a
> "--extra-cflags=-I/new_location" and it worked as it should.
>

I'm going to start a second thread (vaapi cannot be compiled into ffmpeg
8.0) on this topic as this is very odd...

Thanks,
David
_______________________________________________
ffmpeg-user mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to