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;
    av_fifo_free(ctx->timestamps);
    av_fifo_free(ctx->pending);
    av_fifo_free(ctx->ready);
    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;
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;
    av_fifo_free(ctx->timestamps);
    av_fifo_free(ctx->pending);
    av_fifo_free(ctx->ready);
    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;
av_cold int FUNC_0(AVCodecContext *avctx)
{
    NVENCContext *ctx               = avctx->priv_data;
    NV_ENCODE_API_FUNCTION_LIST *nv = &ctx->nvel.nvenc_funcs;
    int VAR_0;
    av_fifo_free(ctx->timestamps);
    av_fifo_free(ctx->pending);
    av_fifo_free(ctx->ready);
    if (ctx->in) {
        for (VAR_0 = 0; VAR_0 < ctx->nb_surfaces; ++VAR_0) {
            nv->nvEncDestroyInputBuffer(ctx->nvenc_ctx, ctx->in[VAR_0].in);
            nv->nvEncDestroyBitstreamBuffer(ctx->nvenc_ctx, ctx->out[VAR_0].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;
av_cold int FUNC_0(AVCodecContext *avctx)
{ NVENCContext *ctx               = avctx->priv_data; NV_ENCODE_API_FUNCTION_LIST *nv = &ctx->nvel.nvenc_funcs; int VAR_0; av_fifo_free(ctx->timestamps); av_fifo_free(ctx->pending); av_fifo_free(ctx->ready); if (ctx->in) { for (VAR_0 = 0; VAR_0 < ctx->nb_surfaces; ++VAR_0) { nv->nvEncDestroyInputBuffer(ctx->nvenc_ctx, ctx->in[VAR_0].in); nv->nvEncDestroyBitstreamBuffer(ctx->nvenc_ctx, ctx->out[VAR_0].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;