34void ImageHandler::OnImage(
const std::shared_ptr<Image> &image) {
39 cv::Mat mat(image->height(), image->width(), CV_8UC3,
40 const_cast<char *
>(image->data().data()), image->step());
41 cv::cvtColor(mat, mat, cv::COLOR_RGB2BGR);
46 0, 0, cv::INTER_LINEAR);
48 std::unique_lock<std::mutex> lock(mutex_);
49 cv::imencode(
".jpg", mat, send_buffer_, std::vector<int>() );
54void ImageHandler::OnImage(
55 const std::shared_ptr<CompressedImage> &compressed_image) {
57 compressed_image->format() ==
"h265" ) {
61 std::vector<uint8_t> compressed_raw_data(compressed_image->data().begin(),
62 compressed_image->data().end());
63 cv::Mat mat_image = cv::imdecode(compressed_raw_data, cv::IMREAD_COLOR);
65 std::unique_lock<std::mutex> lock(mutex_);
66 cv::imencode(
".jpg", mat_image, send_buffer_,
102 "HTTP/1.1 200 OK\r\n"
103 "Connection: close\r\n"
106 "Cache-Control: no-cache, no-store, must-revalidate, private\r\n"
107 "Pragma: no-cache\r\n"
108 "Content-Type: multipart/x-mixed-replace; "
109 "boundary=--BoundaryString\r\n"
112 std::vector<uchar> to_send;
115 std::unique_lock<std::mutex> lock(mutex_);
116 to_send = send_buffer_;
119 if (!to_send.empty()) {
122 "--BoundaryString\r\n"
123 "Content-type: image/jpeg\r\n"
124 "Content-Length: %zu\r\n"
128 if (mg_write(conn, &to_send[0], to_send.size()) <= 0) {
132 mg_printf(conn,
"\r\n\r\n");
135 std::unique_lock<std::mutex> lock(mutex_);