ffmpeg(libavcodec). memory leaks in avcodec_encode_video

Posted by gavlig on Stack Overflow See other posts from Stack Overflow or by gavlig
Published on 2012-03-29T17:26:53Z Indexed on 2012/03/29 17:29 UTC
Read the original article Hit count: 468

Filed under:
|
|
|

I'm trying to transcode a video with help of libavcodec. On transcoding big video files(hour or more) i get huge memory leaks in avcodec_encode_video. I have tried to debug it, but with different video files different functions produce leaks, i have got a little bit confused about that :). [Here] (http://stackoverflow.com/questions/4201481/ffmpeg-with-qt-memory-leak) is the same issue that i have, but i have no idea how did that person solve it. QtFFmpegwrapper seems to do the same i do(or i missed something).

my method is lower. I took care about aFrame and aPacket outside with av_free and av_free_packet.

int
Videocut::encode(
AVStream *anOutputStream,
AVFrame *aFrame,
AVPacket *aPacket
)
{
AVCodecContext *outputCodec = anOutputStream->codec;

if (!anOutputStream ||
    !aFrame ||
    !aPacket)
{
    return 1;
    /* NOTREACHED */
}

uint8_t * buffer = (uint8_t *)malloc(
    sizeof(uint8_t) * _DefaultEncodeBufferSize
    );

    if (NULL == buffer) {
        return 2;
        /* NOTREACHED */
}

int packetSize = avcodec_encode_video(
    outputCodec,
        buffer,
        _DefaultEncodeBufferSize,
        aFrame
    );

if (packetSize < 0) {
    free(buffer);
    return 1;
    /* NOTREACHED */
}

aPacket->data = buffer;
aPacket->size = packetSize;

return 0;
}

© Stack Overflow or respective owner

Related posts about c++

Related posts about memory-leaks