diff --git a/selfdrive/modeld/models/commonmodel.cc b/selfdrive/modeld/models/commonmodel.cc index cc7d4b157e..7280a15618 100644 --- a/selfdrive/modeld/models/commonmodel.cc +++ b/selfdrive/modeld/models/commonmodel.cc @@ -8,19 +8,16 @@ void frame_init(ModelFrame* frame, int width, int height, cl_device_id device_id, cl_context context) { transform_init(&frame->transform, context, device_id); - frame->transformed_width = width; - frame->transformed_height = height; + frame->width = width; + frame->height = height; - frame->transformed_y_cl = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, - (size_t)frame->transformed_width*frame->transformed_height, NULL, &err)); - frame->transformed_u_cl = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, - (size_t)(frame->transformed_width/2)*(frame->transformed_height/2), NULL, &err)); - frame->transformed_v_cl = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, - (size_t)(frame->transformed_width/2)*(frame->transformed_height/2), NULL, &err)); + frame->y_cl = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, (size_t)width*height, NULL, &err)); + frame->u_cl = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, (size_t)(width/2)*(height/2), NULL, &err)); + frame->v_cl = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, (size_t)(width/2)*(height/2), NULL, &err)); frame->net_input_size = ((width*height*3)/2)*sizeof(float); frame->net_input = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_WRITE, frame->net_input_size, (void*)NULL, &err)); - loadyuv_init(&frame->loadyuv, context, device_id, frame->transformed_width, frame->transformed_height); + loadyuv_init(&frame->loadyuv, context, device_id, width, height); } float *frame_prepare(ModelFrame* frame, cl_command_queue q, @@ -28,11 +25,11 @@ float *frame_prepare(ModelFrame* frame, cl_command_queue q, const mat3 &transform) { transform_queue(&frame->transform, q, yuv_cl, width, height, - frame->transformed_y_cl, frame->transformed_u_cl, frame->transformed_v_cl, - frame->transformed_width, frame->transformed_height, + frame->y_cl, frame->u_cl, frame->v_cl, + frame->width, frame->height, transform); loadyuv_queue(&frame->loadyuv, q, - frame->transformed_y_cl, frame->transformed_u_cl, frame->transformed_v_cl, + frame->y_cl, frame->u_cl, frame->v_cl, frame->net_input); float *net_input_buf = (float *)CL_CHECK_ERR(clEnqueueMapBuffer(q, frame->net_input, CL_TRUE, CL_MAP_READ, 0, frame->net_input_size, @@ -45,9 +42,9 @@ void frame_free(ModelFrame* frame) { transform_destroy(&frame->transform); loadyuv_destroy(&frame->loadyuv); CL_CHECK(clReleaseMemObject(frame->net_input)); - CL_CHECK(clReleaseMemObject(frame->transformed_v_cl)); - CL_CHECK(clReleaseMemObject(frame->transformed_u_cl)); - CL_CHECK(clReleaseMemObject(frame->transformed_y_cl)); + CL_CHECK(clReleaseMemObject(frame->v_cl)); + CL_CHECK(clReleaseMemObject(frame->u_cl)); + CL_CHECK(clReleaseMemObject(frame->y_cl)); } void softmax(const float* input, float* output, size_t len) { diff --git a/selfdrive/modeld/models/commonmodel.h b/selfdrive/modeld/models/commonmodel.h index 1e1200db6d..05bb3e464f 100644 --- a/selfdrive/modeld/models/commonmodel.h +++ b/selfdrive/modeld/models/commonmodel.h @@ -20,8 +20,8 @@ float sigmoid(float input); typedef struct ModelFrame { Transform transform; - int transformed_width, transformed_height; - cl_mem transformed_y_cl, transformed_u_cl, transformed_v_cl; + int width, height; + cl_mem y_cl, u_cl, v_cl; LoadYUVState loadyuv; cl_mem net_input; size_t net_input_size;