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.
Regards.
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user