[FFmpeg-devel] [PATCH] flacenc: Support attaching pictures

James Almer jamrial at gmail.com
Tue Aug 6 21:36:07 CEST 2013


On 06/08/13 6:54 AM, Paul B Mahol wrote:
> On 8/5/13, James Almer <jamrial at gmail.com> wrote:
>> -    avio_write(s->pb, pkt->data, pkt->size);
>> +    FLACContext *flac = s->priv_data;
>> +
>> +    if (pkt->stream_index == flac->audio_stream_idx) {
>> +        if (flac->pics_to_write) {
>> +            /* buffer audio packets until we get all the pictures */
>> +            AVPacketList *pktl = av_mallocz(sizeof(*pktl));
>> +            if (!pktl)
>> +                return AVERROR(ENOMEM);
>> +
>> +            pktl->pkt     = *pkt;
>> +            pktl->pkt.buf = av_buffer_ref(pkt->buf);
>> +            if (!pktl->pkt.buf) {
>> +                av_freep(&pktl);
>> +                return AVERROR(ENOMEM);
>> +            }
> 
> So this eats endless memory? How much of it is buffered?
> 
> This is extremly sloppy/ugly/complicated/buggy design.

This is a design taken from the MP3 muxer, so it was seen as a good solution at 
some point.
It will buffer audio packets in memory until the last video/picture packet is 
received and processed (One per picture). At that point every buffered audio 
packet will be flushed to the aviocontext, and every new packet written directly.


More information about the ffmpeg-devel mailing list