I am trying to add Vulkan encoding presets to Cinelerra-gg (as usual).
Unfortunately, I only have sw lavapipe based Vulkan on Android/Termux, and
no hw video encoder exposed from my Radeon RX 550 GPU on desktop (I recall
lack of drm modifiers prevent it from being exposed *in Vulkan* on this
generation of gpu. May be someone will fix that, but not yet)
But for some reason my preset keep failing, even if mediaencoder one works?
On Termux I use system's ffmpeg 8.0.1, and as cli application it works (at
least starts rendering) with ffv1_vulkan and hwupload.
ffmpeg -init_hw_device vulkan -i zeldaHQ.flv -vf hwupload -strict -2
-level 4 -loglevel verbose -c:v ffv1_vulkan vk.mov
But if I try to use same libav* libs from cingg - I get
[ffv1_vulkan @ 0xb4000071c885e2f0] format (null) not supported
I think this is due to check at
./libavcodec/ffv1enc_vulkan.c: err =
ff_ffv1_encode_setup_plane_info(avctx, avctx->sw_pix_fmt);
We do not set avctx->sw_pix_fmt (documentation in avcodec.h still says it
unused on encoding ?) so I thought setting this will fix at least init.
Well, cinelerra-gg just crashed if I set this to say YUV444P or RGBA32
pixel formats.
I tried to remove this check on Slackware desktop build of cinelerra-gg
(this links to private copy of ffmpeg 8.0 libs statically) and got crash
too even before encoder printed any info (in av_buf_ref?)
Now, I tried to put
printf("Sw Type: %i \n", avctx->sw_pix_fmt); in ffv1enc_vulkan and int
printed 0 during successfull command line ffmpeg run?
Does Vulkan require any specific init at encode time, programmaticaly?
Our code:
https://git.cinelerra-gg.org/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=
_______________________________________________
Libav-user mailing list -- [email protected]
To unsubscribe send an email to [email protected]