Lines Matching defs:svt_enc
125 static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc)
132 svt_enc->raw_size = luma_size * 3 / 2;
135 svt_enc->in_buf = av_mallocz(sizeof(*svt_enc->in_buf));
136 if (!svt_enc->in_buf)
139 svt_enc->in_buf->p_buffer = av_mallocz(sizeof(*in_data));
140 if (!svt_enc->in_buf->p_buffer)
143 svt_enc->in_buf->size = sizeof(*svt_enc->in_buf);
152 SvtContext *svt_enc = avctx->priv_data;
158 param->hierarchical_levels = svt_enc->hierarchical_level;
159 param->tier = svt_enc->tier;
160 param->scene_change_detection = svt_enc->scd;
161 param->tile_columns = svt_enc->tile_columns;
162 param->tile_rows = svt_enc->tile_rows;
164 if (svt_enc->la_depth >= 0)
165 param->look_ahead_distance = svt_enc->la_depth;
168 if (svt_enc->enc_mode >= 0)
169 param->enc_mode = svt_enc->enc_mode;
187 if (svt_enc->crf > 0) {
188 param->qp = svt_enc->crf;
190 } else if (svt_enc->qp > 0) {
191 param->qp = svt_enc->qp;
255 while ((en = av_dict_get(svt_enc->svtav1_opts, "", en, AV_DICT_IGNORE_SUFFIX))) {
265 if ((en = av_dict_get(svt_enc->svtav1_opts, "", NULL, AV_DICT_IGNORE_SUFFIX))) {
357 SvtContext *svt_enc = avctx->priv_data;
361 svt_enc->eos_flag = EOS_NOT_REACHED;
363 svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, svt_enc, &svt_enc->enc_params);
368 ret = config_enc_params(&svt_enc->enc_params, avctx);
374 svt_ret = svt_av1_enc_set_parameter(svt_enc->svt_handle, &svt_enc->enc_params);
379 svt_ret = svt_av1_enc_init(svt_enc->svt_handle);
387 svt_ret = svt_av1_enc_stream_header(svt_enc->svt_handle, &headerPtr);
408 svt_enc->frame = av_frame_alloc();
409 if (!svt_enc->frame)
412 return alloc_buffer(&svt_enc->enc_params, svt_enc);
417 SvtContext *svt_enc = avctx->priv_data;
418 EbBufferHeaderType *headerPtr = svt_enc->in_buf;
424 if (svt_enc->eos_flag == EOS_SENT)
431 svt_av1_enc_send_picture(svt_enc->svt_handle, &headerPtrLast);
432 svt_enc->eos_flag = EOS_SENT;
436 ret = read_in_data(&svt_enc->enc_params, frame, headerPtr);
454 svt_av1_enc_send_picture(svt_enc->svt_handle, headerPtr);
459 static AVBufferRef *get_output_ref(AVCodecContext *avctx, SvtContext *svt_enc, int filled_len)
461 if (filled_len > svt_enc->max_tu_size) {
465 if (filled_len > svt_enc->raw_size * max_frames) {
471 av_buffer_pool_uninit(&svt_enc->pool);
472 svt_enc->pool = av_buffer_pool_init(max_tu_size + AV_INPUT_BUFFER_PADDING_SIZE, NULL);
473 if (!svt_enc->pool)
476 svt_enc->max_tu_size = max_tu_size;
478 av_assert0(svt_enc->pool);
480 return av_buffer_pool_get(svt_enc->pool);
485 SvtContext *svt_enc = avctx->priv_data;
487 AVFrame *frame = svt_enc->frame;
492 if (svt_enc->eos_flag == EOS_RECEIVED)
504 av_frame_unref(svt_enc->frame);
506 svt_ret = svt_av1_enc_get_packet(svt_enc->svt_handle, &headerPtr, svt_enc->eos_flag);
510 ref = get_output_ref(avctx, svt_enc, headerPtr->n_filled_len);
545 svt_enc->eos_flag = EOS_RECEIVED;
556 SvtContext *svt_enc = avctx->priv_data;
558 if (svt_enc->svt_handle) {
559 svt_av1_enc_deinit(svt_enc->svt_handle);
560 svt_av1_enc_deinit_handle(svt_enc->svt_handle);
562 if (svt_enc->in_buf) {
563 av_free(svt_enc->in_buf->p_buffer);
564 av_freep(&svt_enc->in_buf);
567 av_buffer_pool_uninit(&svt_enc->pool);
568 av_frame_free(&svt_enc->frame);