Я протестировал конвертировать 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);