[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