#include "cereal/visionipc/visionbuf.h"

#define ALIGN(x, align) (((x) + (align)-1) & ~((align)-1))

void visionbuf_compute_aligned_width_and_height(int width, int height, int *aligned_w, int *aligned_h) {
  *aligned_w = width;
  *aligned_h = height;
}

void VisionBuf::init_rgb(size_t init_width, size_t init_height, size_t init_stride) {
  this->rgb = true;
  this->width = init_width;
  this->height = init_height;
  this->stride = init_stride;
}

void VisionBuf::init_yuv(size_t init_width, size_t init_height, size_t init_stride, size_t init_uv_offset){
  this->rgb = false;
  this->width = init_width;
  this->height = init_height;
  this->stride = init_stride;
  this->uv_offset = init_uv_offset;

  this->y = (uint8_t *)this->addr;
  this->uv = this->y + this->uv_offset;
}


uint64_t VisionBuf::get_frame_id() {
  return *frame_id;
}

void VisionBuf::set_frame_id(uint64_t id) {
  *frame_id = id;
}
