| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -22,9 +22,9 @@ extern "C" { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "selfdrive/common/swaglog.h" | 
					 | 
					 | 
					 | 
					#include "selfdrive/common/swaglog.h" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "selfdrive/common/util.h" | 
					 | 
					 | 
					 | 
					#include "selfdrive/common/util.h" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					RawLogger::RawLogger(const char* filename, CameraType type, int width, int height, int fps, | 
					 | 
					 | 
					 | 
					RawLogger::RawLogger(const char* filename, CameraType type, int in_width, int in_height, int fps, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                     int bitrate, bool h265, bool downscale, bool write) | 
					 | 
					 | 
					 | 
					                     int bitrate, bool h265, int out_width, int out_height, bool write) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  : filename(filename), fps(fps) { | 
					 | 
					 | 
					 | 
					  : in_width_(in_width), in_height_(in_height), filename(filename), fps(fps) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // TODO: respect write arg
 | 
					 | 
					 | 
					 | 
					  // TODO: respect write arg
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -34,8 +34,8 @@ RawLogger::RawLogger(const char* filename, CameraType type, int width, int heigh | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  codec_ctx = avcodec_alloc_context3(codec); | 
					 | 
					 | 
					 | 
					  codec_ctx = avcodec_alloc_context3(codec); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  assert(codec_ctx); | 
					 | 
					 | 
					 | 
					  assert(codec_ctx); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  codec_ctx->width = width; | 
					 | 
					 | 
					 | 
					  codec_ctx->width = out_width; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  codec_ctx->height = height; | 
					 | 
					 | 
					 | 
					  codec_ctx->height = out_height; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  codec_ctx->pix_fmt = AV_PIX_FMT_YUV420P; | 
					 | 
					 | 
					 | 
					  codec_ctx->pix_fmt = AV_PIX_FMT_YUV420P; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // codec_ctx->thread_count = 2;
 | 
					 | 
					 | 
					 | 
					  // codec_ctx->thread_count = 2;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -51,14 +51,14 @@ RawLogger::RawLogger(const char* filename, CameraType type, int width, int heigh | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame = av_frame_alloc(); | 
					 | 
					 | 
					 | 
					  frame = av_frame_alloc(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  assert(frame); | 
					 | 
					 | 
					 | 
					  assert(frame); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame->format = codec_ctx->pix_fmt; | 
					 | 
					 | 
					 | 
					  frame->format = codec_ctx->pix_fmt; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame->width = width; | 
					 | 
					 | 
					 | 
					  frame->width = out_width; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame->height = height; | 
					 | 
					 | 
					 | 
					  frame->height = out_height; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame->linesize[0] = width; | 
					 | 
					 | 
					 | 
					  frame->linesize[0] = out_width; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame->linesize[1] = width/2; | 
					 | 
					 | 
					 | 
					  frame->linesize[1] = out_width/2; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  frame->linesize[2] = width/2; | 
					 | 
					 | 
					 | 
					  frame->linesize[2] = out_width/2; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (downscale) { | 
					 | 
					 | 
					 | 
					  if (in_width != out_width || in_height != out_height) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    downscale_buf.resize(width * height * 3 / 2); | 
					 | 
					 | 
					 | 
					    downscale_buf.resize(out_width * out_height * 3 / 2); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -122,6 +122,8 @@ void RawLogger::encoder_close() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int RawLogger::encode_frame(const uint8_t *y_ptr, const uint8_t *u_ptr, const uint8_t *v_ptr, | 
					 | 
					 | 
					 | 
					int RawLogger::encode_frame(const uint8_t *y_ptr, const uint8_t *u_ptr, const uint8_t *v_ptr, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            int in_width, int in_height, uint64_t ts) { | 
					 | 
					 | 
					 | 
					                            int in_width, int in_height, uint64_t ts) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  assert(in_width == this->in_width_); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  assert(in_height == this->in_height_); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  AVPacket pkt; | 
					 | 
					 | 
					 | 
					  AVPacket pkt; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  av_init_packet(&pkt); | 
					 | 
					 | 
					 | 
					  av_init_packet(&pkt); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt.data = NULL; | 
					 | 
					 | 
					 | 
					  pkt.data = NULL; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |