1

我正在使用下面的代码从 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 指针的 N​​ULL 值吗?

4

1 回答 1

2

通过使用以下代码修复了此问题,

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_NV12 而不是 AV_PIX_FMT_VAAPI 选项。

于 2018-04-26T08:55:25.790 回答