|  |  |  | @ -94,6 +94,8 @@ def migrate_peripheralState(lr): | 
			
		
	
		
			
				
					|  |  |  |  | def migrate_cameraStates(lr): | 
			
		
	
		
			
				
					|  |  |  |  |   all_msgs = [] | 
			
		
	
		
			
				
					|  |  |  |  |   frame_to_encode_id = defaultdict(dict) | 
			
		
	
		
			
				
					|  |  |  |  |   # just for encodeId fallback mechanism | 
			
		
	
		
			
				
					|  |  |  |  |   min_frame_id = defaultdict(lambda: float('inf')) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   for msg in lr: | 
			
		
	
		
			
				
					|  |  |  |  |     if msg.which() not in ["roadEncodeIdx", "wideRoadEncodeIdx", "driverEncodeIdx"]: | 
			
		
	
	
		
			
				
					|  |  |  | @ -111,10 +113,18 @@ def migrate_cameraStates(lr): | 
			
		
	
		
			
				
					|  |  |  |  |       continue | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     camera_state = getattr(msg, msg.which()) | 
			
		
	
		
			
				
					|  |  |  |  |     min_frame_id[msg.which()] = min(min_frame_id[msg.which()], camera_state.frameId) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     encode_id = frame_to_encode_id[msg.which()].get(camera_state.frameId) | 
			
		
	
		
			
				
					|  |  |  |  |     if encode_id is None: | 
			
		
	
		
			
				
					|  |  |  |  |       print(f"Missing encoded frame for camera feed {msg.which()} with frameId: {camera_state.frameId}") | 
			
		
	
		
			
				
					|  |  |  |  |       continue | 
			
		
	
		
			
				
					|  |  |  |  |       if len(frame_to_encode_id[msg.which()]) != 0: | 
			
		
	
		
			
				
					|  |  |  |  |         continue | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       # fallback mechanism for logs without encodeIdx (e.g. logs from before 2022 with dcamera recording disabled) | 
			
		
	
		
			
				
					|  |  |  |  |       # try to fake encode_id by subtracting lowest frameId | 
			
		
	
		
			
				
					|  |  |  |  |       encode_id = camera_state.frameId - min_frame_id[msg.which()] | 
			
		
	
		
			
				
					|  |  |  |  |       print(f"Faking encodeId to {encode_id} for camera feed {msg.which()} with frameId: {camera_state.frameId}") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     new_msg = messaging.new_message(msg.which()) | 
			
		
	
		
			
				
					|  |  |  |  |     new_camera_state = getattr(new_msg, new_msg.which()) | 
			
		
	
	
		
			
				
					|  |  |  | 
 |