  
      if yuv_img_raw is None or not yuv_img_raw.any():
        continue
  
      imgff = np.frombuffer(yuv_img_raw, dtype=np.uint8).reshape((vipc_client.height * 3 // 2, vipc_client.width))
      num_px = vipc_client.width * vipc_client.height
      bgr = cv2.cvtColor(imgff, cv2.COLOR_YUV2RGB_NV12)
  
      zoom_matrix = _BB_TO_FULL_FRAME[num_px]
      cv2.warpAffine(bgr, zoom_matrix[:2], (img.shape[1], img.shape[0]), dst=img, flags=cv2.WARP_INVERSE_MAP)
 
</s> remove     if yuv_img_raw is None or not yuv_img_raw.any():
 </s> add     if yuv_img_raw is None or not yuv_img_raw.data.any(): </s> remove     rear = extract_image(c.recv(), c.width, c.height, c.stride, c.uv_offset)
 </s> add     rear = extract_image(c.recv()) </s> remove     front = extract_image(c.recv(), c.width, c.height, c.stride, c.uv_offset)
 </s> add     front = extract_image(c.recv()) </s> remove def extract_image(buf, w, h, stride, uv_offset):
  y = np.array(buf[:uv_offset], dtype=np.uint8).reshape((-1, stride))[:h, :w]
  u = np.array(buf[uv_offset::2], dtype=np.uint8).reshape((-1, stride//2))[:h//2, :w//2]
  v = np.array(buf[uv_offset+1::2], dtype=np.uint8).reshape((-1, stride//2))[:h//2, :w//2]
 </s> add def extract_image(buf):
  y = np.array(buf.data[:buf.uv_offset], dtype=np.uint8).reshape((-1, buf.stride))[:buf.height, :buf.width]
  u = np.array(buf.data[buf.uv_offset::2], dtype=np.uint8).reshape((-1, buf.stride//2))[:buf.height//2, :buf.width//2]
  v = np.array(buf.data[buf.uv_offset+1::2], dtype=np.uint8).reshape((-1, buf.stride//2))[:buf.height//2, :buf.width//2]
    imgff = np.frombuffer(yuv_img_raw.data, dtype=np.uint8).reshape((vipc_client.height * 3 // 2, vipc_client.width))
  
      if yuv_img_raw is None or not yuv_img_raw.any():
        continue
  
    imgff = np.frombuffer(yuv_img_raw.data, dtype=np.uint8).reshape((vipc_client.height * 3 // 2, vipc_client.width))
      num_px = vipc_client.width * vipc_client.height
      bgr = cv2.cvtColor(imgff, cv2.COLOR_YUV2RGB_NV12)
  
      zoom_matrix = _BB_TO_FULL_FRAME[num_px]
      cv2.warpAffine(bgr, zoom_matrix[:2], (img.shape[1], img.shape[0]), dst=img, flags=cv2.WARP_INVERSE_MAP)
keep keep keep keep replace keep keep keep keep keep
 Added python VisionBuf class (#29075)

* Added python VisionBuf class

* fixed property names

* Bump cereal 
tools/replay/ui.py