使用libyuv替换sws_scale提高性能

作者: 熊皮皮 | 来源:发表于2017-02-14 21:11 被阅读788次

    使用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);
    

    相关文章

      网友评论

      本文标题:使用libyuv替换sws_scale提高性能

      本文链接:https://www.haomeiwen.com/subject/norfwttx.html