You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							839 B
						
					
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							839 B
						
					
					
				#pragma once
 | 
						|
 | 
						|
#include <cstdio>
 | 
						|
#include <cstdlib>
 | 
						|
#include <cstddef>
 | 
						|
#include <cstdint>
 | 
						|
#include <jpeglib.h>
 | 
						|
#include <vector>
 | 
						|
#include <memory>
 | 
						|
#include "cereal/messaging/messaging.h"
 | 
						|
#include "msgq/visionipc/visionbuf.h"
 | 
						|
 | 
						|
class JpegEncoder {
 | 
						|
public:
 | 
						|
  JpegEncoder(const std::string &pusblish_name, int width, int height);
 | 
						|
  ~JpegEncoder();
 | 
						|
  void pushThumbnail(VisionBuf *buf, const VisionIpcBufExtra &extra);
 | 
						|
 | 
						|
private:
 | 
						|
  void generateThumbnail(const uint8_t *y, const uint8_t *uv, int width, int height, int stride);
 | 
						|
  void compressToJpeg(uint8_t *y_plane, uint8_t *u_plane, uint8_t *v_plane);
 | 
						|
 | 
						|
  int thumbnail_width;
 | 
						|
  int thumbnail_height;
 | 
						|
  std::string publish_name;
 | 
						|
  std::vector<uint8_t> yuv_buffer;
 | 
						|
  std::unique_ptr<PubMaster> pm;
 | 
						|
 | 
						|
  // JPEG output buffer
 | 
						|
  unsigned char* out_buffer = nullptr;
 | 
						|
  unsigned long out_size = 0;
 | 
						|
};
 | 
						|
 |