michaelni changed the topic of #ffmpeg-devel to: Welcome to the FFmpeg development channel | Questions about using FFmpeg or developing with libav* libs should be asked in #ffmpeg | This channel is publicly logged | FFmpeg 7.0.1 has been released! | Please read ffmpeg.org/developer.html#Code-of-conduct
System_Error has quit [Remote host closed the connection]
aaabbb has quit [Ping timeout: 256 seconds]
cone-404 has quit [Quit: transmission timeout]
System_Error has joined #ffmpeg-devel
thilo has quit [Ping timeout: 268 seconds]
thilo has joined #ffmpeg-devel
thilo has quit [Changing host]
thilo has joined #ffmpeg-devel
aaabbb has joined #ffmpeg-devel
IndecisiveTurtle has quit [Ping timeout: 260 seconds]
* Sean_McG
peeks in
tmm1 has joined #ffmpeg-devel
lexano has quit [Ping timeout: 252 seconds]
System_Error has quit [Remote host closed the connection]
<cone-445>
ffmpeg Michael Niedermayer master:c69e6cccd7e1: avformat/iamf_parse: consider nb_substreams when accessing substreams array
<cone-445>
ffmpeg Michael Niedermayer master:2b2ced61eba0: avcodec/libvpxenc: Cleanup on error
<cone-445>
ffmpeg Michael Niedermayer master:97ecfb5a193c: MAINTAINERS: Update the entries for the release maintainer for FFmpeg
<cone-445>
ffmpeg Michael Niedermayer master:7fab9b97613e: avformat/iamf_parse: 0 layers are not allowed
<cone-445>
ffmpeg Michael Niedermayer master:4cab028bd0e3: avformat/mxfdec: Check container_ul->desc before use
<cone-445>
ffmpeg Michael Niedermayer master:0da6865ce292: avfilter/qsvvpp: Remove unreachable code
System_Error has joined #ffmpeg-devel
<elenril>
__monty__: it might be ok in this case
Krowl has joined #ffmpeg-devel
jordimedia_ has quit [Quit: Connection closed for inactivity]
<Lynne>
this may be the first time anyone's gotten to use the gf2p8mult instruction for anything that isn't aes
scat117 has quit [Ping timeout: 260 seconds]
scat117 has joined #ffmpeg-devel
__monty__ has quit [Ping timeout: 264 seconds]
dellas has joined #ffmpeg-devel
Krowl has quit [Read error: Connection reset by peer]
<cone-445>
ffmpeg James Almer master:5191339f7465: avformat/evc: remove useless struct field
<cone-445>
ffmpeg James Almer master:4e608e90eb9a: avformat/evc: fix writing reserved bits
<cone-445>
ffmpeg James Almer master:0ae157b3603f: avformat/iamf_parse: add missing padding to AAC extradata
System_Error has quit [Ping timeout: 260 seconds]
System_Error has joined #ffmpeg-devel
Krowl has joined #ffmpeg-devel
<jdarnley>
Would it be a bug for AV_FRAME_DATA_S12M_TIMECODE to not start with a count of the number of timecodes that follow?
dellas has quit [Remote host closed the connection]
tmm1 has joined #ffmpeg-devel
dellas has joined #ffmpeg-devel
tmm1 has quit [Ping timeout: 252 seconds]
dellas has quit [Remote host closed the connection]
kyborg2011 has joined #ffmpeg-devel
__monty__ has joined #ffmpeg-devel
__monty__ has quit [Ping timeout: 240 seconds]
__monty__ has joined #ffmpeg-devel
kyborg2011 has quit [Read error: Connection reset by peer]
kyborg2011 has joined #ffmpeg-devel
blb has quit [Ping timeout: 246 seconds]
blb has joined #ffmpeg-devel
tufei has joined #ffmpeg-devel
System_Error has quit [Ping timeout: 260 seconds]
tmm1 has joined #ffmpeg-devel
tmm1 has quit [Ping timeout: 246 seconds]
cone-445 has quit [Quit: transmission timeout]
tmm1 has joined #ffmpeg-devel
System_Error has joined #ffmpeg-devel
Krowl has quit [Read error: Connection reset by peer]
tmm1 has quit [Ping timeout: 252 seconds]
AbleBacon has joined #ffmpeg-devel
Krowl has joined #ffmpeg-devel
dionisis has quit [Ping timeout: 272 seconds]
dionisis has joined #ffmpeg-devel
IndecisiveTurtle has joined #ffmpeg-devel
IndecisiveTurtle has quit [Ping timeout: 264 seconds]
Krowl has quit [Read error: Connection reset by peer]
tufei has quit [Quit: Leaving]
tufei has joined #ffmpeg-devel
IndecisiveTurtle has joined #ffmpeg-devel
tmm1 has joined #ffmpeg-devel
tmm1 has quit [Ping timeout: 264 seconds]
Krowl has joined #ffmpeg-devel
compn has quit [Read error: Connection reset by peer]
compn has joined #ffmpeg-devel
compn has quit [Remote host closed the connection]
compn has joined #ffmpeg-devel
tmm1 has joined #ffmpeg-devel
compn has quit [Remote host closed the connection]
IndecisiveTurtle has quit [Ping timeout: 264 seconds]
compn has joined #ffmpeg-devel
compn has quit [Remote host closed the connection]
compn has joined #ffmpeg-devel
compn has quit [Client Quit]
tmm1 has quit [Ping timeout: 264 seconds]
Krowl has quit [Read error: Connection reset by peer]
Livio has joined #ffmpeg-devel
microchip_ has quit [Ping timeout: 246 seconds]
Livio has quit [Ping timeout: 264 seconds]
microchip_ has joined #ffmpeg-devel
ccawley2011_ has joined #ffmpeg-devel
ccawley2011 has quit [Ping timeout: 268 seconds]
tufei has quit [Remote host closed the connection]
tufei has joined #ffmpeg-devel
ccawley2011_ has quit [Read error: Connection reset by peer]
AbleBacon has quit [Remote host closed the connection]
AbleBacon has joined #ffmpeg-devel
IndecisiveTurtle has joined #ffmpeg-devel
mkver has quit [Ping timeout: 268 seconds]
kyborg2011 has quit [Read error: Connection reset by peer]
kyborg2011 has joined #ffmpeg-devel
averne has quit [Ping timeout: 268 seconds]
__monty__ has quit [Quit: leaving]
<IndecisiveTurtle>
Lynne: Some more progress today. Wanted to ask before doing more deeply if you have any preferences/or want to recommend how to implement the encoding aspect.I was thinking of following the logical steps of the encoder. Make a few image views for the different planes and perform haar wavelet in compute shader for each plane.As far as optimization goes I thought about using subgroup quads to minimize memory loads on
<IndecisiveTurtle>
Then have an execution barrier and deinterleave in place in the image or to a host visible device local buffer (might be more convenient to read it back later)The second step is admittedly the hardest one for me to grasp, but after reading the spec a few times again I believe it's trying to find the best quantinization index so that each slicewill get encoded to a byte count between some min and max it has configure
<IndecisiveTurtle>
At each step it counts how many bits the slice takes using the Exp-Golomb Codes (not 100% sure on that).This should probably go inside the compute shader as it looks expensive and relatively easily parallelizable.The encoding part looks simple enough, it iterates over each subband, of each slice of each plane quantizes it and encodes it.
<IndecisiveTurtle>
Another question would be if we want all this process in a single compute dispatch or want to split it in parts.Sorry for the wall of text, wanted to inform you first in case you have something more specific in mind
<Lynne>
keep it simple for now, one slice per invocation, write the main encode shader that takes some big slice size that won't be exceeded no matter what, transforms, quantizes and encodes
<Lynne>
once you have that running, it will make it much easier to build on top, and add a shader before it to calculate the slice size for a quantizer (or a few quantizers)
<IndecisiveTurtle>
Ok so I will start by implementing a single shader that does all 3 steps in a way similar to the C code.
<IndecisiveTurtle>
Skipping slice calculation as you said though
<IndecisiveTurtle>
Btw I saw that for getting the output buffer for the encoder there is ff_get_encode_buffer. So could either use memory import to make into a vulkan buffer and write encoded data directly into it, or use a device local host visible buffer and copy result (maybe faster). Which one do you think is better?
<Lynne>
allocate a new device local buffer via ff_vk_create_buf(), map it, then just call av_buffer_create to create an AVBufferRef for it, using the FFVkBuffer * as the data ptr, and the avvkdevicecontext as the opaque pointer, and a small free function that just unmaps and frees the buffer
<Lynne>
oh... I already wrote a function that does exactly that
<Lynne>
ff_vk_create_avbuf()
<IndecisiveTurtle>
Oh cool thanks
<Lynne>
you don't even have to map the buffer yourself, if you use the VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT flag, the mapping and unmapping at the end is all done for you
<Lynne>
oh, and, use ff_vk_get_pooled_buffer() instead
tmm1 has joined #ffmpeg-devel
<Lynne>
that gives you pooling for free
<Lynne>
then just set avpkt->buf to the returned avbufferref, avpkt->size and avpkt->data to the size and mapped address and it should work
<IndecisiveTurtle>
Will do
<IndecisiveTurtle>
Another thing. For shader inclusion is there a way to use separate .comp files for them, or need to use the GLSL macros exposed by avfilter?
tmm1 has quit [Ping timeout: 264 seconds]
<Lynne>
IndecisiveTurtle: you don't have to use the macros, copy the "VULKAN =" part at the end of libavfilter/Makefile into libavcodec's makefile, s/libavfilter/libavcodec, then you can place your .comp shaders in libavcodec/vulkan
<Lynne>
then just add "extern const char *ff_source_<shader_name>_comp;" in the encoder and use it
<IndecisiveTurtle>
Great, because those macros would make formatting a challenge :p