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]

Reply via email to