Lines Matching defs:venc

179 	struct venc_t *venc = inst->priv;
197 f->fmt.pix_mp.colorspace = venc->params.color.primaries;
198 f->fmt.pix_mp.xfer_func = venc->params.color.transfer;
199 f->fmt.pix_mp.ycbcr_enc = venc->params.color.matrix;
200 f->fmt.pix_mp.quantization = venc->params.color.full_range;
221 struct venc_t *venc = inst->priv;
238 venc->params.input_format = cur_fmt->pixfmt;
239 venc->params.src_stride = cur_fmt->bytesperline[0];
240 venc->params.src_width = cur_fmt->width;
241 venc->params.src_height = cur_fmt->height;
242 venc->params.crop.left = 0;
243 venc->params.crop.top = 0;
244 venc->params.crop.width = cur_fmt->width;
245 venc->params.crop.height = cur_fmt->height;
247 venc->params.codec_format = cur_fmt->pixfmt;
248 venc->params.out_width = cur_fmt->width;
249 venc->params.out_height = cur_fmt->height;
253 venc->params.color.primaries = pix_mp->colorspace;
254 venc->params.color.transfer = pix_mp->xfer_func;
255 venc->params.color.matrix = pix_mp->ycbcr_enc;
256 venc->params.color.full_range = pix_mp->quantization;
259 pix_mp->colorspace = venc->params.color.primaries;
260 pix_mp->xfer_func = venc->params.color.transfer;
261 pix_mp->ycbcr_enc = venc->params.color.matrix;
262 pix_mp->quantization = venc->params.color.full_range;
270 struct venc_t *venc = inst->priv;
285 timeperframe->numerator = venc->params.frame_rate.numerator;
286 timeperframe->denominator = venc->params.frame_rate.denominator;
294 struct venc_t *venc = inst->priv;
309 timeperframe->numerator = venc->params.frame_rate.numerator;
311 timeperframe->denominator = venc->params.frame_rate.denominator;
313 venc->params.frame_rate.numerator = timeperframe->numerator;
314 venc->params.frame_rate.denominator = timeperframe->denominator;
316 rational_best_approximation(venc->params.frame_rate.numerator,
317 venc->params.frame_rate.denominator,
318 venc->params.frame_rate.numerator,
319 venc->params.frame_rate.denominator,
321 venc->params.frame_rate.numerator = n;
322 venc->params.frame_rate.denominator = d;
333 struct venc_t *venc = inst->priv;
347 s->r = venc->params.crop;
356 static int venc_valid_crop(struct venc_t *venc, const struct vpu_core_resources *res)
364 rect = &venc->params.crop;
367 src_width = venc->params.src_width;
368 src_height = venc->params.src_height;
388 struct venc_t *venc = inst->priv;
399 venc->params.crop.left = ALIGN(s->r.left, res->step_width);
400 venc->params.crop.top = ALIGN(s->r.top, res->step_height);
401 venc->params.crop.width = ALIGN(s->r.width, res->step_width);
402 venc->params.crop.height = ALIGN(s->r.height, res->step_height);
403 if (venc_valid_crop(venc, res)) {
404 venc->params.crop.left = 0;
405 venc->params.crop.top = 0;
406 venc->params.crop.width = venc->params.src_width;
407 venc->params.crop.height = venc->params.src_height;
410 inst->crop = venc->params.crop;
417 struct venc_t *venc = inst->priv;
429 if (!venc->input_ready)
432 venc->input_ready = false;
438 wake_up_all(&venc->wq);
518 struct venc_t *venc = inst->priv;
524 venc->params.profile = ctrl->val;
527 venc->params.level = ctrl->val;
530 venc->params.rc_enable = ctrl->val;
533 venc->params.rc_mode = ctrl->val;
536 if (ctrl->val != venc->params.bitrate)
537 venc->bitrate_change = true;
538 venc->params.bitrate = ctrl->val;
541 venc->params.bitrate_max = ctrl->val;
544 venc->params.gop_length = ctrl->val;
547 venc->params.bframes = ctrl->val;
550 venc->params.i_frame_qp = ctrl->val;
553 venc->params.p_frame_qp = ctrl->val;
556 venc->params.b_frame_qp = ctrl->val;
559 venc->request_key_frame = 1;
562 venc->cpb_size = ctrl->val * 1024;
565 venc->params.sar.enable = ctrl->val;
568 venc->params.sar.idc = ctrl->val;
571 venc->params.sar.width = ctrl->val;
574 venc->params.sar.height = ctrl->val;
701 struct venc_t *venc = inst->priv;
704 if (vpu_helper_get_free_space(inst) < venc->cpb_size)
706 return venc->input_ready;
709 if (list_empty(&venc->frames))
722 static void venc_set_enable(struct venc_t *venc, u32 type, int enable)
727 venc->enable |= mask;
729 venc->enable &= ~mask;
732 static u32 venc_get_enable(struct venc_t *venc, u32 type)
734 return venc->enable & venc_get_enable_mask(type);
739 struct venc_t *venc = inst->priv;
742 venc->input_ready = true;
757 struct venc_t *venc;
763 venc = inst->priv;
772 venc->skipped_bytes += skipped;
773 venc->skipped_count++;
783 struct venc_t *venc = inst->priv;
824 venc->ready_count++;
834 struct venc_t *venc;
840 venc = inst->priv;
841 list_for_each_entry_safe(frame, tmp, &venc->frames, list) {
856 struct venc_t *venc;
861 venc = inst->priv;
870 list_add_tail(&frame->list, &venc->frames);
871 venc->encode_count++;
880 struct venc_t *venc = inst->priv;
882 if (venc->stopped && list_empty(&venc->frames))
888 struct venc_t *venc = inst->priv;
891 venc->stopped = true;
895 wake_up_all(&venc->wq);
908 struct venc_t *venc;
913 venc = inst->priv;
914 vfree(venc);
921 struct venc_t *venc = inst->priv;
925 venc_set_enable(venc, type, 1);
926 if ((venc->enable & VENC_ENABLE_MASK) != VENC_ENABLE_MASK)
932 inst->stream_buffer.length = max_t(u32, stream_buffer_size, venc->cpb_size * 3);
941 ret = vpu_iface_set_encode_params(inst, &venc->params, 0);
952 ret = vpu_iface_set_encode_params(inst, &venc->params, 1);
961 venc->bitrate_change = false;
962 venc->input_ready = true;
963 venc->frame_count = 0;
964 venc->encode_count = 0;
965 venc->ready_count = 0;
966 venc->stopped = false;
968 if (venc->frame_count == 0)
973 venc_set_enable(venc, type, 0);
982 struct venc_t *venc;
985 venc = inst->priv;
987 for (i = 0; i < ARRAY_SIZE(venc->enc); i++)
988 vpu_free_dma(&venc->enc[i]);
989 for (i = 0; i < ARRAY_SIZE(venc->ref); i++)
990 vpu_free_dma(&venc->ref[i]);
1001 struct venc_t *venc;
1005 venc = inst->priv;
1006 if (enc_frame_num > ARRAY_SIZE(venc->enc)) {
1010 if (ref_frame_num > ARRAY_SIZE(venc->ref)) {
1014 if (act_frame_num > ARRAY_SIZE(venc->act)) {
1020 venc->enc[i].length = enc_frame_size;
1021 ret = vpu_alloc_dma(inst->core, &venc->enc[i]);
1028 venc->ref[i].length = ref_frame_size;
1029 ret = vpu_alloc_dma(inst->core, &venc->ref[i]);
1039 venc->act[0].length = act_frame_size;
1040 venc->act[0].phys = inst->act.phys;
1041 venc->act[0].virt = inst->act.virt;
1044 vpu_iface_config_memory_resource(inst, MEM_RES_ENC, i, &venc->enc[i]);
1046 vpu_iface_config_memory_resource(inst, MEM_RES_REF, i, &venc->ref[i]);
1048 vpu_iface_config_memory_resource(inst, MEM_RES_ACT, i, &venc->act[i]);
1051 static void venc_cleanup_frames(struct venc_t *venc)
1056 list_for_each_entry_safe(frame, tmp, &venc->frames, list) {
1064 struct venc_t *venc = inst->priv;
1066 venc_set_enable(venc, type, 0);
1067 if (venc->enable & VENC_ENABLE_MASK)
1077 if (!wait_event_timeout(venc->wq, venc->stopped, VPU_TIMEOUT)) {
1093 struct venc_t *venc = inst->priv;
1105 if (venc->request_key_frame) {
1107 venc->request_key_frame = 0;
1109 if (venc->bitrate_change) {
1110 vpu_session_update_parameters(inst, &venc->params);
1111 venc->bitrate_change = false;
1116 venc->input_ready = false;
1117 venc->frame_count++;
1125 struct venc_t *venc;
1130 venc = inst->priv;
1131 if (list_empty(&venc->frames))
1134 frame = list_first_entry(&venc->frames, struct venc_frame_t, list);
1148 struct venc_t *venc = inst->priv;
1153 if (venc->stopped)
1159 struct venc_t *venc = inst->priv;
1164 num = scnprintf(str, size, "profile = %d\n", venc->params.profile);
1167 num = scnprintf(str, size, "level = %d\n", venc->params.level);
1171 venc->params.frame_rate.numerator,
1172 venc->params.frame_rate.denominator);
1176 venc->params.src_width,
1177 venc->params.src_height,
1178 venc->params.out_width,
1179 venc->params.out_height);
1183 venc->params.crop.left,
1184 venc->params.crop.top,
1185 venc->params.crop.width,
1186 venc->params.crop.height);
1191 venc->enable,
1192 venc->frame_count, venc->encode_count,
1193 venc->ready_count,
1194 venc->stopped);
1197 num = scnprintf(str, size, "gop = %d\n", venc->params.gop_length);
1200 num = scnprintf(str, size, "bframes = %d\n", venc->params.bframes);
1204 venc->params.rc_enable ? "enable" : "disable",
1205 venc->params.rc_mode,
1206 venc->params.bitrate,
1207 venc->params.bitrate_max,
1208 venc->params.i_frame_qp);
1212 venc->params.sar.enable,
1213 venc->params.sar.idc,
1214 venc->params.sar.width,
1215 venc->params.sar.height);
1221 venc->params.color.primaries,
1222 venc->params.color.transfer,
1223 venc->params.color.matrix,
1224 venc->params.color.full_range);
1228 venc->skipped_count, venc->skipped_bytes);
1260 struct venc_t *venc;
1264 venc = inst->priv;
1265 venc->params.qp_min = 1;
1266 venc->params.qp_max = 51;
1267 venc->params.qp_min_i = 1;
1268 venc->params.qp_max_i = 51;
1269 venc->params.bitrate_min = BITRATE_MIN;
1297 struct venc_t *venc;
1304 venc = vzalloc(sizeof(*venc));
1305 if (!venc) {
1313 inst->priv = venc;
1314 INIT_LIST_HEAD(&venc->frames);
1315 init_waitqueue_head(&venc->wq);