av_cold int ff_nvenc_encode_close(AVCodecContext *avctx) { NVENCContext *ctx = avctx->priv_data; NV_ENCODE_API_FUNCTION_LIST *nv = &ctx->nvel.nvenc_funcs; int i; if (ctx->in) { for (i = 0; i < ctx->nb_surfaces; ++i) { nv->nvEncDestroyInputBuffer(ctx->nvenc_ctx, ctx->in[i].in); nv->nvEncDestroyBitstreamBuffer(ctx->nvenc_ctx, ctx->out[i].out); } } av_freep(&ctx->in); av_freep(&ctx->out); if (ctx->nvenc_ctx) nv->nvEncDestroyEncoder(ctx->nvenc_ctx); if (ctx->cu_context) ctx->nvel.cu_ctx_destroy(ctx->cu_context); if (ctx->nvel.nvenc) dlclose(ctx->nvel.nvenc); if (ctx->nvel.cuda) dlclose(ctx->nvel.cuda); return 0; }
fcH264EncoderNVIDIA::~fcH264EncoderNVIDIA() { if (m_encoder) { if (m_input.inputBuffer) { nvenc.nvEncDestroyInputBuffer(m_encoder, m_input.inputBuffer); } if (m_output.bitstreamBuffer) { nvenc.nvEncDestroyBitstreamBuffer(m_encoder, m_output.bitstreamBuffer); } nvenc.nvEncDestroyEncoder(m_encoder); } }