sws_scale vs libyuv производительность, скорость - PullRequest
0 голосов
/ 04 января 2019

Я протестировал конвертировать NV12 в RGB с помощью ffmpeg (sws_scale) и libyuv (NV12ToRGB24) Я догадался, что больше, чем быстрый sws_scale, но это не так. это правильный результат? и как быстро и низко конвертировать использование процессора? я написал результат теста.

I3 windows10 64-битный рабочий стол Vs2017 64-битная отладочная сборка Размер видео = 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);
...