Во-первых, не используйте avcodec_decode_video2
. Используйте avcodec_send_packet
и avcodec_receive_frame
секунду, не вызывайте av_frame_get_buffer
на источнике. Просто выделите его с помощью av_frame_alloc
, avcodec_receive_frame
настроит остальные
Затем выделите кадр назначения, например:
AVFrame* frame = av_frame_alloc();
frame->format = whatever;
frame->width = w;
frame->height = h;
av_frame_get_buffer(frame, 32);