sws_scale vs libyuv的性能,速度

时间:2019-01-04 10:45:24

标签: ffmpeg libyuv

我测试了使用ffmpeg(sws_scale)和libyuv(NV12ToRGB24)将NV12转换为RGB 我猜libyuv比快速sws_scale多得多,但事实并非如此。 结果正确吗?以及如何快速降低CPU使用率? 我写了测试结果。

I3 Windows10 64位桌面 vs2017 64位调试版本 VideoSize = 1280 x 692

  

libyuv(NV12ToRGB24)测试结果

  0.04400 sec
  0.04500 sec
  0.04300 sec
  0.04400 sec
  0.04400 sec
  0.04600 sec
  0.04400 sec
  0.04400 sec
  0.04500 sec
  0.05000 sec
  

libyuv(NV12ToRGB24)测试代码

        clock_t begin, end;
        begin = clock();

        libyuv::NV12ToRGB24(avFrame->data[0], avFrame->linesize[0],
            avFrame->data[1], avFrame->linesize[1],
            matRGB.data, avFrame->width * 3,
            avFrame->width,
            avFrame->height
        );
        end = clock(); 
        printf("%0.5f\n", (float) (end - begin) / CLOCKS_PER_SEC );

--------------------------------------------------- ---------------------------------

  

ffmpeg(sws_scale)测试结果

 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
 0.00300 sec
  

ffmpeg(sws_scale)测试代码

    begin = clock();

        sws_scale(sws_ctx, avFrame->data,
            avFrame->linesize, 0, avFrame->height, frame_bgr->data,
            frame_bgr->linesize);

        //cv::Mat mat(dest_height, dest_width, cv_format, frame_bgr->data[0], frame_bgr->linesize[0]);

        end = clock();
        printf("%0.5f\n", (float)(end - begin) / CLOCKS_PER_SEC);

0 个答案:

没有答案