| 266 | } |
| 267 | |
| 268 | static 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", |
nothing calls this directly
no test coverage detected