    frame_buf_count = frame_cnt;
  
    camera_bufs = std::make_unique<VisionBuf[]>(frame_buf_count);
    camera_bufs_metadata = std::make_unique<FrameMetadata[]>(frame_buf_count);
  
    for (int i = 0; i < frame_buf_count; i++) {
      camera_bufs[i].allocate(frame_size);
 
</s> remove     camera_bufs[i] = visionbuf_allocate_cl(frame_size, device_id, context);
 </s> add     camera_bufs[i].allocate(frame_size);
    camera_bufs[i].init_cl(device_id, context); </s> remove   frame_size = ci->frame_height * ci->frame_stride;
 </s> add  </s> remove   for (int i = 0; i < UI_BUF_COUNT; i++) {
 </s> add   for (int i = 0; i < s->vipc_client->num_buffers; i++) { </s> remove void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, int frame_cnt,
                     const char *name, release_cb relase_callback) {
 </s> add void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, VisionIpcServer * v, int frame_cnt, VisionStreamType rgb_type, VisionStreamType yuv_type, release_cb release_callback) {
  vipc_server = v;
  this->rgb_type = rgb_type;
  this->yuv_type = yuv_type;
  this->release_callback = release_callback;
 </s> remove     // one frame in memory
    VisionBuf yuv_ion = visionbuf_allocate_cl(buf_info.buf_len, device_id, context);

 </s> add 
  // RAW frame
  frame_size = ci->frame_height * ci->frame_stride;
    frame_buf_count = frame_cnt;
  
  // RAW frame
  frame_size = ci->frame_height * ci->frame_stride;
    camera_bufs = std::make_unique<VisionBuf[]>(frame_buf_count);
    camera_bufs_metadata = std::make_unique<FrameMetadata[]>(frame_buf_count);
  
    for (int i = 0; i < frame_buf_count; i++) {
      camera_bufs[i].allocate(frame_size);
keep add keep keep keep keep keep
 VisionIPC 2.0 (#19641)

* Squashed vipc

* Update release files

* Remove else

* add visionipc to release files

* use poller in vipc receive

* opencl framework instead of lib on macos

* Fix camera webcam

* Fix opencl on mac in ui

* more webcam fixes

* typo in ui sconsfile

* Use cur_yuv_buf

* visionbuf c++ class

* Camera qcom was still using visionbuf_allocate

* Turn loggerd back on

* fix snapshot

* No build needed

* update test camerad

* no more release callback

* make encoder c++

* Revert "no more release callback"

This reverts commit e5707b07002fee665d0483d90713154efc2d70d4.

* fix exit handlers

* No need to check errno

* move release callback call

* s/VIPCBufExtra/VisionIpcBufExtra/g

* use non blocking connect

* ui use non blocking connect

* Lower condition variable wait time

* Snapshot cleanup

* bump cereal

* bump cereal 
selfdrive/camerad/cameras/camera_common.cc