av_frame_free падает при использовании av_frame_get_buffer - PullRequest
0 голосов
/ 02 июля 2018

Всякий раз, когда выделяется AVFrame * с использованием следующего кода:

AVFrame *frame = av_frame_alloc();
frame->format = codec_context->pix_fmt;
frame->width = codec_context->width;
frame->height = codec_context->height;
if(av_frame_get_buffer(frame, 0) < 0){
    //handle error
}

А позже попробуйте освободить этот кадр * с помощью av_frame_free(&frame);, моя программа аварийно завершится ... однако, если я выделю кадр с помощью:

AVFrame *frame = av_frame_alloc();    
int num_bytes = av_image_get_buffer_size(codec_context->pix_fmt, codec_context->width, codec_context->height, 1);
buffer = (uint8_t*) av_malloc(num_bytes * sizeof(uint8_t));
av_image_fill_arrays(frame->data, frame->linesize, buffer, codec_context->pix_fmt, codec_context->width, codec_context->height, 1);

Тогда av_frame_free (& frame) не вылетает. Что я делаю неправильно? Каковы различия в распределении моего кадра этими двумя способами? Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...