使用libyuv替換sws_scale提高性能

使用FFmpeg的sws_scale進行YUV等轉換時,從執行日志上看,在Android設備上運行性能較低,如下所示,單位為毫秒。

sws_scale耗時圖示

對于實時性要求較高的場合,可考慮使用libyuv等NEON指令實現的庫。

libyuv耗時圖示

對比可發現libyuv相對sws_scale有數十倍性能改善。

使用libyuv接口時得注意它參數定義,以NV21ToI420為例,其定義如下。參數src_stride_y和src_stride_vu都應該傳遞源Y平面的寬。

// Convert NV21 to I420.
LIBYUV_API
int NV21ToI420(const uint8 *src_y, int src_stride_y,
               const uint8 *src_vu, int src_stride_vu,
               uint8 *dst_y, int dst_stride_y,
               uint8 *dst_u, int dst_stride_u,
               uint8 *dst_v, int dst_stride_v,
               int width, int height);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容