[Libav-user] Custom IO strange behavior.

Mohamed Moanis mohamed_moanis at outlook.com
Sat Jun 27 11:33:31 CEST 2015

I am implementing a custom IO to read data packets then transcode them.The problem I have is memory leakage, which I guess is coming from the custom IO buffer I allocate to read the data.I am referring to the avio example. I have exactly the same callback function.struct buffer_data {    uint8_t *ptr;    size_t size; ///< size left in the buffer};static int read_packet(void *opaque, uint8_t *buf, int buf_size){    struct buffer_data *bd = (struct buffer_data *)opaque;    buf_size = FFMIN(buf_size, bd->size);    printf("ptr:%p size:%zu\n", bd->ptr, bd->size);    /* copy internal buffer data to buf */    memcpy(buf, bd->ptr, buf_size);    bd->ptr  += buf_size;    bd->size -= buf_size;    return buf_size;}
When I debug my code, the function is called even after the data was all read. It is called more than a time with the buffer size is zero and later on the ptr itself is null. My question here is why does that happen?
The second question, is how to free the buffer allocated. In my application I require reading a JPEG frame from a camera that is considerable in size. What I do, is  that I free the AVIOContext and it's buffer just after I call avformat_open_input. But I can see the memory usage increasing by an estimate of the frame size each run.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20150627/d4ccad08/attachment.html>

More information about the Libav-user mailing list