SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
turbojpeg_compressor.hpp
1// turbojpeg_compressor.hpp
2// Created by Greg on 1/30/25.
3// Copyright (C) 2025 Presage Security, Inc.
4//
5// SPDX-License-Identifier: LGPL-3.0-or-later
6
7#pragma once
8
9#include <vector>
10#include <absl/status/statusor.h>
11#include <opencv2/core/mat.hpp>
12#include <turbojpeg.h>
13
14namespace presage::smartspectra::compression {
15
22class TurboJpegCompressor {
23public:
28 static absl::StatusOr<TurboJpegCompressor> Create();
29
30 ~TurboJpegCompressor();
31
32 // Move semantics
33 TurboJpegCompressor(TurboJpegCompressor&& other) noexcept;
34 TurboJpegCompressor& operator=(TurboJpegCompressor&& other) noexcept;
35
36 // No copy
37 TurboJpegCompressor(const TurboJpegCompressor&) = delete;
38 TurboJpegCompressor& operator=(const TurboJpegCompressor&) = delete;
39
47 absl::Status Compress(const cv::Mat& frame, int quality, std::vector<unsigned char>& output);
48
49private:
50 explicit TurboJpegCompressor(tjhandle handle);
51
52 tjhandle handle_ = nullptr;
53};
54
55} // namespace presage::smartspectra::compression
absl::Status Compress(const cv::Mat &frame, int quality, std::vector< unsigned char > &output)
Definition turbojpeg_compressor.cpp:47
static absl::StatusOr< TurboJpegCompressor > Create()
Definition turbojpeg_compressor.cpp:14