问题遇到的现象和发生背景
为什么我用下面的代码想将 AV_PIX_FMT_YUYV422转为AV_PIX_FMT_NV12但是不成功,sws_scale的返回值为603,但是我的原始宽高是1920*1080
操作环境、软件版本等信息
尝试过的解决方法
我想要达到的结果
void Widget::frameToRgbImage(AVFrame* pDest, AVFrame* frame)
{
// 创建SWS上下文
qDebug() << "frameToRgbImage 0.1 ";
if (m_pSwsContext == nullptr)
{
m_pSwsContext = sws_getContext(frame->width, frame->height, AV_PIX_FMT_YUYV422,\
frame->width, frame->height, AV_PIX_FMT_NV12, \
SWS_BICUBIC, nullptr, nullptr, nullptr); //AV_PIX_FMT_NV12
}
qDebug() << "frameToRgbImage 0.2 ";
//avpicture_fill( )
int ret = sws_scale(m_pSwsContext, (const uint8_t* const*)frame->data, frame->linesize, 0, frame->height, \
pDest->data, pDest->linesize);
qDebug() << "frameToRgbImage ret: " << ret;
qDebug() << "frameToRgbImage 0.3 ";
// av_freep(&pDest->data);
// sws_freeContext(m_pSwsContext);
}