steve at sumost.ca
Thu Oct 27 06:09:00 BST 2022
After staring at ffmpeg docs and digikam/qtav code for a couple days: it seems
to me the qtav code is fundamentally mismatched for decoding.
As far as I can work out, the ffmpeg model is that a single packet from the
demuxer may generate an arbitrary number of frames. In contrast, qtav assumes
that a packet may generate only a single frame.
On the ffmpeg side, example code  shows the avcodec_receive_frame() loop
after sending the packet to the codec.
On the qtav side, the AudioDecoderFFmpeg::decode() function  has a single
avcodec_receive_frame() following the avcodec_send_packet().
Have I overlooked something in this analysis? The qtav code uses layers
exuberantly so I may well have gotten confused.
If the analysis is correct: I don't see a simple path forward. I think it
will need rewriting the AVDecoder class hierarchy -- because that is where
decode() is declared.
Also of note: as far as I can work out, this code has always been wrong, even
for ffmpeg version 4.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 833 bytes
Desc: This is a digitally signed message part.
More information about the Digikam-devel