如何使用 FFMPEG sws_scaler api 将 AV_PIX_FMT_VAAPI 转换为 AV_PIX_FMT_YUV420?
How to convert from AV_PIX_FMT_VAAPI to AV_PIX_FMT_YUV420 using FFMPEG sws_scaler api?
我正在使用以下代码将 VAAPI 格式转换为 YUV420 格式。
AVFrame* src, * dst;
SwsContext* conversion_context_ = sws_getContext(videoDecoder_->width(), videoDecoder_->height(), AV_PIX_FMT_VAAPI,scaler_->getWidth(), scaler_->getHeight(), AV_PIX_FMT_YUV420P,(int)SWS_BICUBIC,
nullptr, nullptr, nullptr); <------------- This function is returning NULL value.
sws_scale(conversion_context_,
(uint8_t const * const *)src->data, src->linesize, 0, (int)height,
dst->data, dst->linesize);
谁能告诉我为什么我得到 SwsContext 指针的 NULL 值?
使用以下代码解决了这个问题,
SwsContext* conversion_context_ = sws_getContext(videoDecoder_->width(), videoDecoder_->height(), AV_PIX_FMT_NV12 ,scaler_->getWidth(), scaler_->getHeight(), AV_PIX_FMT_YUV420P,(int)SWS_BICUBIC,
nullptr, nullptr, nullptr);
所以我没有使用 AV_PIX_FMT_VAAPI 选项,而是使用了 AV_PIX_FMT_NV12。
我正在使用以下代码将 VAAPI 格式转换为 YUV420 格式。
AVFrame* src, * dst;
SwsContext* conversion_context_ = sws_getContext(videoDecoder_->width(), videoDecoder_->height(), AV_PIX_FMT_VAAPI,scaler_->getWidth(), scaler_->getHeight(), AV_PIX_FMT_YUV420P,(int)SWS_BICUBIC,
nullptr, nullptr, nullptr); <------------- This function is returning NULL value.
sws_scale(conversion_context_,
(uint8_t const * const *)src->data, src->linesize, 0, (int)height,
dst->data, dst->linesize);
谁能告诉我为什么我得到 SwsContext 指针的 NULL 值?
使用以下代码解决了这个问题,
SwsContext* conversion_context_ = sws_getContext(videoDecoder_->width(), videoDecoder_->height(), AV_PIX_FMT_NV12 ,scaler_->getWidth(), scaler_->getHeight(), AV_PIX_FMT_YUV420P,(int)SWS_BICUBIC,
nullptr, nullptr, nullptr);
所以我没有使用 AV_PIX_FMT_VAAPI 选项,而是使用了 AV_PIX_FMT_NV12。