[Ffmpeg-devel] Audio decode loops in ffmpeg.c (original) (raw)
Thanos Kyritsis djart
Fri Feb 17 09:22:34 CET 2006
- Previous message: [Ffmpeg-devel] x264: AVI index broken
- Next message: [Ffmpeg-devel] ffmpg.org DNS
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Good day,
I'd like some help on understanding the audio decoding part of ffmpeg.c, if someone could be willing enough to explain :)
I'm interested on the output_packet() function. This function does the following:
....... [snipped code] ......
len = pkt->size; ptr = pkt->data; while (len >0) {
....... [snipped code] ......
ret = avcodec_decode_audio(ist->st->codec, samples, &data_size, ptr, len);
....... [snipped code] ......
ptr += ret; len -= ret; if (data_size <= 0) { .... }
etc etc .....
}
I can't understand why: ptr += ret; len -= ret; are needed.
I have noticed that they cause the whole decoding loop to rerun on the same pkt for input streams like AC3, whereas len-=ret makes len = 0 for input streams like mp3 or wav, thus making the decoding loop run only one time for each pkt.
Could it be because avcodec_decode_audio() is not able to handle a whole AC3 pkt, but needs to run twice or more for such a pkt to get decoded fully ?
Could someone explain this, please ? Thanks in advance!
-- Thanos Kyritsis
- What's your ONE purpose in life ?
- To explode, of course! ;-)
- Previous message: [Ffmpeg-devel] x264: AVI index broken
- Next message: [Ffmpeg-devel] ffmpg.org DNS
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]