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

James Almer jamrial at gmail.com
Wed Aug 7 00:56:45 CEST 2013


On 06/08/13 6:59 PM, Paul B Mahol wrote:
> On 8/6/13, James Almer <jamrial at gmail.com> wrote:
>> 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.
> 
> Can this code be moved at separate file, instead of being duplicated
> all the time.
> So it can be easily replaced in future.

I'll try.

Regards.


More information about the ffmpeg-devel mailing list