From patchwork Tue May 3 16:13:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Traian Coza X-Patchwork-Id: 35576 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp497350pzb; Tue, 3 May 2022 09:16:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZI9aOZart19U67A4dsfQ3ZnkyNG+VG2gn296KdGjYglYtigLvZKXGKmhatWQKcGXO7+zS X-Received: by 2002:a50:fa94:0:b0:425:e8ac:3fb4 with SMTP id w20-20020a50fa94000000b00425e8ac3fb4mr18631182edr.43.1651594568007; Tue, 03 May 2022 09:16:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651594568; cv=none; d=google.com; s=arc-20160816; b=z9vlZD45zz8L2vQSEehUmjXox8Gi7S1D7UAUpl7H+3fwlDhtcZEceA3oI7pgBBzeVv qcqEyNZs3C+aJTnjWk0PG0qAET8EUuEuA3Cb+dBOkvAg0R9keRB0R+v1MxC2gxlfcIWW vHyxVxEEbKM2SWZVVidxsrt0MRWIcbBHkds3/L7MFgPgSDNvEYDWUwNoZNKY0EYSEGy4 QMkDD45cKTgsp6c8hi5ShuN5AL9bAD3axjdshKypksDG33aYiN65028BFCdL9p7CDmhR zHyn2u3dPcMV5qTCduFZIl2ftUV57JEJMFRmiryBKJuC+sL3UmygV3Y5tI+YedLOHKYw sGOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=QcYDsI8d3lEL+QM+bqc0+QXNoRrxxl5iqIoBwxUX1F0=; b=lasRJyIXTTMFu3R4jgBIg2QgGjU0s7eZlm57cvUTConm4YcqgkUxsKcMchjYg6TBdf VxCLlj6Qz4OZCFp8NSZU0Jt5wsBhX014LHsQSxsim8FPRSRpcanrQL/CaW3z4DdlT0II ogTMhSe6yrVE0TcAAFyMgMBaUhdGM7cq3Rn9gw/0dp1D6ZjdDOfcYWzQ1y8z4lCncOWq BYKPFkozlUkx5+ix/afoz9BqRhWD0aNk7k1nqFh9ksC2hWLo7UWyz7bfC6MVpELrL44m rvXjq7cly+0p085v31wwgoeTgTYcMLk6QaDUfewKyeWlHRs6cQqG//eOiPX2HYmcXDlX HEow== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Ny91Dmqv; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f14-20020a170906c08e00b006e87e97d30csi14563563ejz.197.2022.05.03.09.16.07; Tue, 03 May 2022 09:16:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Ny91Dmqv; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 42BF868B3ED; Tue, 3 May 2022 19:14:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8A8968B3BD for ; Tue, 3 May 2022 19:13:56 +0300 (EEST) Received: by mail-qk1-f178.google.com with SMTP id j9so14120544qkg.1 for ; Tue, 03 May 2022 09:13:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tGf462WMOWga0AoPIOKuTodklNzjJbQlP7q7/GSJwt4=; b=Ny91Dmqv6H//dayFWNKXz5E7K43Dy8ts5dAIqVDMFkmcYH1stvkjSusEp8g/Zryeiq JHLFwl/d6pwMJZ0x+kvjAuYHGFbXeHrCw/RCNa4LcdjITyP29oD5TGlSSKZdx7/2qNhy MupeBhVvj2gs8POBaoSkov+Hljb6UqMGssL0CT0zdYdhj1ZkWvyiEdkvbkRQ955aZlM+ dYyi1zq9sQ3u1n9BPW5rB1MtGqeaqoeqT7dh1TcDd6izhbKje3kpAe71z5i8uSKUnLcx tzpQJ4WGslK7GFwF+V++MQQ2fF2FPYhXuKkX6tunqe2OmIn5afb7qCEaq/uxe5JUzXrH bptQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tGf462WMOWga0AoPIOKuTodklNzjJbQlP7q7/GSJwt4=; b=7QEgvm4WvgJ7Wiz2rmCjtz5m4e0KtzzOVUkLWMvDTfQObCxdEMjNr88mAOXFwbaFE1 g9hbERMVGhXJCxmrSw93qZTr2lFZ/KDjW4j0PdY8PgFpMf2hbsndy6uoVXfgAbbF+NFm oywIR/TPhuXFtv8NXXvX9xNMjnJpi2Ors5DrNL/MHe7FEEwUPUI7CveCZYotnwa6yF9W VUmvGBgiaMAQ8ElT/2AHePewJRpFOPhy8uBslibgFVMDqcsKh/fX7vha1bevYKUeZfYu 85q+U1C0P7qjdmPqdSgeRJ8D5z5rC0wU6C4OLNQ3Rw+vvIH6qEtEQpgQGQrGRpNFyo1K n7yA== X-Gm-Message-State: AOAM533EX5eVjfrFV3RuWy79r1R60yg2fKZ1BnSq37AQvTz2DmXT7MZV Yr4iND5m2kGTKRTg6FV17ZpzUHVUkp3I X-Received: by 2002:a37:b95:0:b0:69f:b96d:ff4e with SMTP id 143-20020a370b95000000b0069fb96dff4emr12895796qkl.373.1651594435493; Tue, 03 May 2022 09:13:55 -0700 (PDT) Received: from thinkpad.. ([66.220.203.136]) by smtp.gmail.com with ESMTPSA id fp35-20020a05622a50a300b002f39b99f67asm5812731qtb.20.2022.05.03.09.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 May 2022 09:13:55 -0700 (PDT) From: Traian Coza To: ffmpeg-devel@ffmpeg.org Date: Tue, 3 May 2022 12:13:23 -0400 Message-Id: <20220503161328.842587-8-traian.coza@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220503161328.842587-1-traian.coza@gmail.com> References: <20220503161328.842587-1-traian.coza@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/12] Close libass after using X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Traian Coza Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: UBVVViQhYAdJ --- fftools/ffmpeg.c | 2 +- libavcodec/avcodec.c | 9 +++++++++ libavcodec/text_to_bitmap.c | 13 +++++++++++-- libavcodec/text_to_bitmap.h | 8 +++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 0ff9da7bf4..ae622492ee 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -3239,7 +3239,7 @@ static int init_output_stream(OutputStream *ost, AVFrame *frame, return AVERROR_INVALIDDATA; } if (input_props == AV_CODEC_PROP_TEXT_SUB && output_props == AV_CODEC_PROP_BITMAP_SUB) - init_ass_context(ist, ost); + init_ass_context(input_streams, output_streams, nb_input_streams, nb_output_streams, ost->source_index, ost->index); #else if (input_props && output_props && input_props != output_props) { snprintf(error, error_len, diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index d11f035481..1e308f39c2 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -42,6 +42,10 @@ #include "thread.h" #include "version.h" +#if CONFIG_LIBASS +#include "libavcodec/text_to_bitmap.h" +#endif + #include "libavutil/ffversion.h" const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION; @@ -534,6 +538,11 @@ av_cold int avcodec_close(AVCodecContext *avctx) } else if (av_codec_is_decoder(avctx->codec)) av_freep(&avctx->subtitle_header); +#if CONFIG_LIBASS + if (av_codec_is_decoder(avctx->codec) && avctx->ass_context != NULL) + free_ass_context(avctx->ass_context); +#endif + avctx->codec = NULL; avctx->active_thread_type = 0; diff --git a/libavcodec/text_to_bitmap.c b/libavcodec/text_to_bitmap.c index 273564cb67..c419e89c20 100644 --- a/libavcodec/text_to_bitmap.c +++ b/libavcodec/text_to_bitmap.c @@ -18,13 +18,22 @@ struct ASS_Context { ASSSplitContext *ass_split_context; }; -void init_ass_context(InputStream *ist, OutputStream *ost) +void init_ass_context( + InputStream **input_streams, + OutputStream **output_streams, + int nb_input_streams, + int nb_output_streams, + int ist_i, + int ost_i) { + InputStream *ist = input_streams[ist_i]; + OutputStream *ost = output_streams[ost_i]; if (ist->dec_ctx->ass_context) return; + ASS_Context *context = (ASS_Context *)malloc(sizeof(ASS_Context)); context->library = ass_library_init(); ass_set_extract_fonts(context->library, 1); - // TODO: ass_add_font(context->library, ); + // TODO: ass_add_font(context->library, ...); // Try to get a height and width from somewhere int width = 0, height = 0; diff --git a/libavcodec/text_to_bitmap.h b/libavcodec/text_to_bitmap.h index 37d346ae0c..0c4689b039 100644 --- a/libavcodec/text_to_bitmap.h +++ b/libavcodec/text_to_bitmap.h @@ -11,7 +11,13 @@ struct ASS_Context; typedef struct ASS_Context ASS_Context; -void init_ass_context(InputStream *ist, OutputStream *ost); +void init_ass_context( + InputStream **input_streams, + OutputStream **output_streams, + int nb_input_streams, + int nb_output_streams, + int ist_i, + int ost_i); void render_avsub_ass(ASS_Context *, AVSubtitle *); void free_ass_context(ASS_Context *context);