MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / vaapi_encode_issue

Function vaapi_encode_issue

libavcodec/vaapi_encode.c:268–655  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266}
267
268static int vaapi_encode_issue(AVCodecContext *avctx,
269 FFHWBaseEncodePicture *base_pic)
270{
271 FFHWBaseEncodeContext *base_ctx = avctx->priv_data;
272 VAAPIEncodeContext *ctx = avctx->priv_data;
273 VAAPIEncodePicture *pic = base_pic->priv;
274 VAAPIEncodeSlice *slice;
275 VAStatus vas;
276 int err = 0, i;
277 char data[MAX_PARAM_BUFFER_SIZE];
278 size_t bit_len;
279 av_unused AVFrameSideData *sd;
280
281 av_log(avctx, AV_LOG_DEBUG, "Issuing encode for pic %"PRId64"/%"PRId64" "
282 "as type %s.\n", base_pic->display_order, base_pic->encode_order,
283 ff_hw_base_encode_get_pictype_name(base_pic->type));
284 if (base_pic->nb_refs[0] == 0 && base_pic->nb_refs[1] == 0) {
285 av_log(avctx, AV_LOG_DEBUG, "No reference pictures.\n");
286 } else {
287 av_log(avctx, AV_LOG_DEBUG, "L0 refers to");
288 for (i = 0; i < base_pic->nb_refs[0]; i++) {
289 av_log(avctx, AV_LOG_DEBUG, " %"PRId64"/%"PRId64,
290 base_pic->refs[0][i]->display_order, base_pic->refs[0][i]->encode_order);
291 }
292 av_log(avctx, AV_LOG_DEBUG, ".\n");
293
294 if (base_pic->nb_refs[1]) {
295 av_log(avctx, AV_LOG_DEBUG, "L1 refers to");
296 for (i = 0; i < base_pic->nb_refs[1]; i++) {
297 av_log(avctx, AV_LOG_DEBUG, " %"PRId64"/%"PRId64,
298 base_pic->refs[1][i]->display_order, base_pic->refs[1][i]->encode_order);
299 }
300 av_log(avctx, AV_LOG_DEBUG, ".\n");
301 }
302 }
303
304 av_assert0(!base_pic->encode_issued);
305 for (i = 0; i < base_pic->nb_refs[0]; i++) {
306 av_assert0(base_pic->refs[0][i]);
307 av_assert0(base_pic->refs[0][i]->encode_issued);
308 }
309 for (i = 0; i < base_pic->nb_refs[1]; i++) {
310 av_assert0(base_pic->refs[1][i]);
311 av_assert0(base_pic->refs[1][i]->encode_issued);
312 }
313
314 av_log(avctx, AV_LOG_DEBUG, "Input surface is %#x.\n", pic->input_surface);
315
316 pic->recon_surface = (VASurfaceID)(uintptr_t)base_pic->recon_image->data[3];
317 av_log(avctx, AV_LOG_DEBUG, "Recon surface is %#x.\n", pic->recon_surface);
318
319 pic->output_buffer_ref = av_refstruct_pool_get(ctx->output_buffer_pool);
320 if (!pic->output_buffer_ref) {
321 err = AVERROR(ENOMEM);
322 goto fail;
323 }
324 pic->output_buffer = *pic->output_buffer_ref;
325 av_log(avctx, AV_LOG_DEBUG, "Output buffer is %#x.\n",

Callers

nothing calls this directly

Calls 14

av_logFunction · 0.85
av_refstruct_pool_getFunction · 0.85
av_callocFunction · 0.85
av_frame_get_side_dataFunction · 0.85
av_freepFunction · 0.85
av_refstruct_unrefFunction · 0.85

Tested by

no test coverage detected