| 92 | } |
| 93 | |
| 94 | int encsvtInit(hb_work_object_t *w, hb_job_t *job) |
| 95 | { |
| 96 | hb_work_private_t *pv = calloc(1, sizeof(hb_work_private_t)); |
| 97 | w->private_data = pv; |
| 98 | pv->job = job; |
| 99 | pv->chapter_queue = hb_chapter_queue_init(); |
| 100 | |
| 101 | EbErrorType svt_ret; |
| 102 | int ret; |
| 103 | |
| 104 | svt_ret = svt_av1_enc_init_handle(&pv->svt_handle, &pv->enc_params); |
| 105 | if (svt_ret != EB_ErrorNone) |
| 106 | { |
| 107 | hb_error("encsvtav1: error initializing encoder handle"); |
| 108 | return 1; |
| 109 | } |
| 110 | |
| 111 | EbSvtAv1EncConfiguration *param = &pv->enc_params; |
| 112 | |
| 113 | if (job->encoder_preset == NULL) |
| 114 | { |
| 115 | param->enc_mode = 5; |
| 116 | } |
| 117 | else |
| 118 | { |
| 119 | param->enc_mode = atoi(job->encoder_preset); |
| 120 | } |
| 121 | |
| 122 | if (job->vquality <= HB_INVALID_VIDEO_QUALITY) |
| 123 | { |
| 124 | param->target_bit_rate = 1000 * job->vbitrate; |
| 125 | param->rate_control_mode = SVT_AV1_RC_MODE_VBR; |
| 126 | } |
| 127 | else |
| 128 | { |
| 129 | param->qp = fmin(job->vquality, MAX_QP_VALUE); // truncated |
| 130 | param->extended_crf_qindex_offset = (job->vquality - param->qp) * 4; |
| 131 | param->rate_control_mode = SVT_AV1_RC_MODE_CQP_OR_CRF; |
| 132 | param->force_key_frames = 1; |
| 133 | } |
| 134 | |
| 135 | param->color_primaries = hb_output_color_prim(job); |
| 136 | param->transfer_characteristics = hb_output_color_transfer(job); |
| 137 | param->matrix_coefficients = hb_output_color_matrix(job); |
| 138 | |
| 139 | switch (job->color_range) |
| 140 | { |
| 141 | case AVCOL_RANGE_MPEG: |
| 142 | param->color_range = EB_CR_STUDIO_RANGE; |
| 143 | break; |
| 144 | case AVCOL_RANGE_JPEG: |
| 145 | param->color_range = EB_CR_FULL_RANGE; |
| 146 | break; |
| 147 | default: |
| 148 | break; |
| 149 | } |
| 150 | |
| 151 | switch (job->chroma_location) |
nothing calls this directly
no test coverage detected