你如何调整大小AVFrame?一世
这是我目前正在做的事情:
AVFrame* frame = /*...*/;
int width = 600, height = 400;
AVFrame* resizedFrame = av_frame_alloc();
auto format = AVPixelFormat(frame->format);
auto buffer = av_malloc(avpicture_get_size(format, width, height) * sizeof(uint8_t));
avpicture_fill((AVPicture *)resizedFrame, (uint8_t*)buffer, format, width, height);
struct SwsContext* swsContext = sws_getContext(frame->width, frame->height, format,
width, height, format,
SWS_BILINEAR, nullptr, nullptr, nullptr);
sws_scale(swsContext, frame->data, frame->linesize, 0, frame->height, resizedFrame->data, resizedFrame->linesize);
Run Code Online (Sandbox Code Playgroud)
但毕竟这resizedFrames->width和height仍然0时,AVFrame样子垃圾的内容,我得到一个警告,数据不对齐,当我打电话sws_scale。注意:我不想更改像素格式,也不想对其进行硬编码。