7 using namespace std::chrono;
18 xout->setStreamName(
"mjpeg");
22 camRgb->setPreviewSize(300, 300);
25 camRgb->setInterleaved(
true);
31 camRgb->video.link(videnc->
input);
32 camRgb->preview.link(xout2->
input);
33 videnc->bitstream.link(xout->input);
41 auto t1 = steady_clock::now();
43 auto t2 = steady_clock::now();
44 cv::imshow(
"preview", cv::Mat(preview->getHeight(), preview->getWidth(), CV_8UC3, preview->getData().data()));
45 auto t3 = steady_clock::now();
47 auto t4 = steady_clock::now();
48 cv::Mat decodedFrame = cv::imdecode(cv::Mat(mjpeg->getData()), cv::IMREAD_COLOR);
49 auto t5 = steady_clock::now();
50 cv::imshow(
"mjpeg", decodedFrame);
52 int previewLatency = duration_cast<milliseconds>(steady_clock::now() - preview->getTimestamp()).count();
53 int mjpegLatency = duration_cast<milliseconds>(steady_clock::now() - preview->getTimestamp()).count();
55 int ms1 = duration_cast<milliseconds>(t2 - t1).count();
56 int ms2 = duration_cast<milliseconds>(t3 - t2).count();
57 int ms3 = duration_cast<milliseconds>(t4 - t3).count();
58 int ms4 = duration_cast<milliseconds>(t5 - t4).count();
59 int loop = duration_cast<milliseconds>(t5 - t1).count();
61 std::cout << ms1 <<
" " << ms2 <<
" " << ms3 <<
" " << ms4 <<
" loop: " << loop <<
" | Latencies - preview : " << previewLatency
62 <<
" mjpeg: " << mjpegLatency << std::endl;
63 int key = cv::waitKey(1);