From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id CBBD545D20 for ; Fri, 5 May 2023 18:21:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 210A068C17C; Fri, 5 May 2023 21:21:49 +0300 (EEST) Received: from mail-ua1-f51.google.com (mail-ua1-f51.google.com [209.85.222.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C523668BFAF for ; Fri, 5 May 2023 21:21:42 +0300 (EEST) Received: by mail-ua1-f51.google.com with SMTP id a1e0cc1a2514c-77d049b9040so15391829241.1 for ; Fri, 05 May 2023 11:21:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1683310901; x=1685902901; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=VhC2/eK2+zuscWyj1kOpnDgubrv9ynrNIh/81ZaAl1g=; b=GQwQgrzsiyKP9ZDarKBeoLApRi1giLlXDvBDP2KPIIoWYQlxBBtgenMlsKl51G7j6Q yzp7fuJpdc1OKG8pfAl1KR9/Onx2XYT5HUNlDx7sNuk2q5TVD1LyiU6jh7Di9RVktKie 3PY0KTazJxOzS2NQElb2DyVpHus1fpliWBZ1bVL9QxSBGeVbShoFUZvC71sQB4WXptEq gV+bNIz6vmfKaLN3LFWSZcW6OL6jK2EcvDnDQ/QDJJyAZNZz/h1L81kPxHGX9pKzGaN/ AI2e9s51y5XsCGWdeKv2Q/b5A975z11UAgQtoBuR+bjB7JrxFk07ZuDT+NxALZlLXV7D a11Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683310901; x=1685902901; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VhC2/eK2+zuscWyj1kOpnDgubrv9ynrNIh/81ZaAl1g=; b=ZenXzqYHscS8jMmH3pbE/oeren5ue6RzusZK9H2b49b9yl9h+24XMv/xeJZUIgUjQy 9Z0+NM2FSXfyP1tg9EyPwJKQDt5HrUBP6PO+t7N4ga8Utcn1b1xxqrmcu2ZqdUKhQgo0 v1lnEcGQHZlhol2KTaXckTi6+41BP/uCgzmMTB8SjaaA6W9ul0JgdogipUklmGSssW2q q4ODhpbc6Quxunclk2ZZdoIuC5Jbywl3WwRLPFQcsQlEpjSGJqS8MVp04EmIf+vYBd8H 6+b9dVZ0tHVHTAc7P9PSkwRhoiOXvWX25bTi9isZNpZQMG4Rh7LVHQ276GyaFW9+YMFX GvOg== X-Gm-Message-State: AC+VfDyaSejQf8Iuf7GVJv1DmDLOTeTLHEUt69gq8gFGaqtGOTo0Kjte MCjm7RAvAuE6jDlqoN8KqXhuerz/4wOGvK2zHPo= X-Google-Smtp-Source: ACHHUZ6PbwlDdH/aOTcPfcnICwtfp+LjGRdPvZFNkYkD06G6ubqR+2QJFhNt5j5ExATtkS0BMq6SdQ== X-Received: by 2002:ac8:5848:0:b0:3f2:11db:9658 with SMTP id h8-20020ac85848000000b003f211db9658mr14230868qth.2.1683310401753; Fri, 05 May 2023 11:13:21 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id d1-20020a05620a166100b0074e26158cf2sm747289qko.93.2023.05.05.11.13.21 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 May 2023 11:13:21 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 May 2023 15:09:03 -0400 Message-Id: <1683313747-3775-3-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1683313747-3775-1-git-send-email-dheitmueller@ltnglobal.com> References: <1683313747-3775-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v6 2/6] vf_fps: properly preserve CEA-708 captions 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: Devin Heitmueller MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: The existing implementation made an attempt to remove duplicate captions if increasing the framerate, but made no attempt to handle reducing the framerate, nor did it rewrite the caption payloads to have the appropriate cc_count (e.g. the cc_count needs to change from 20 to 10 when going from 1080i59 to 720p59 and vice-versa). Make use of the new ccfifo mechanism to ensure that caption data is properly preserved. Signed-off-by: Devin Heitmueller --- libavfilter/vf_fps.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c index 051d278..824e7a1 100644 --- a/libavfilter/vf_fps.c +++ b/libavfilter/vf_fps.c @@ -34,6 +34,7 @@ #include "libavutil/mathematics.h" #include "libavutil/opt.h" #include "avfilter.h" +#include "ccfifo.h" #include "filters.h" #include "internal.h" @@ -85,6 +86,7 @@ typedef struct FPSContext { AVFrame *frames[2]; ///< buffered frames int frames_count; ///< number of buffered frames + AVCCFifo *cc_fifo; ///< closed captions int64_t next_pts; ///< pts of the next frame to output @@ -165,6 +167,7 @@ static av_cold void uninit(AVFilterContext *ctx) frame = shift_frame(ctx, s); av_frame_free(&frame); } + ff_ccfifo_freep(&s->cc_fifo); av_log(ctx, AV_LOG_VERBOSE, "%d frames in, %d frames out; %d frames dropped, " "%d frames duplicated.\n", s->frames_in, s->frames_out, s->drop, s->dup); @@ -210,6 +213,11 @@ static int config_props(AVFilterLink* outlink) s->in_pts_off, s->out_pts_off, s->start_time); } + if (!(s->cc_fifo = ff_ccfifo_alloc(outlink->frame_rate, ctx))) { + av_log(ctx, AV_LOG_ERROR, "Failure to setup CC FIFO queue\n"); + return AVERROR(ENOMEM); + } + av_log(ctx, AV_LOG_VERBOSE, "fps=%d/%d\n", outlink->frame_rate.num, outlink->frame_rate.den); return 0; @@ -242,6 +250,7 @@ static int read_frame(AVFilterContext *ctx, FPSContext *s, AVFilterLink *inlink, av_log(ctx, AV_LOG_DEBUG, "Read frame with in pts %"PRId64", out pts %"PRId64"\n", in_pts, frame->pts); + ff_ccfifo_extract(s->cc_fifo, frame); s->frames[s->frames_count++] = frame; s->frames_in++; @@ -289,7 +298,7 @@ static int write_frame(AVFilterContext *ctx, FPSContext *s, AVFilterLink *outlin if (!frame) return AVERROR(ENOMEM); // Make sure Closed Captions will not be duplicated - av_frame_remove_side_data(s->frames[0], AV_FRAME_DATA_A53_CC); + ff_ccfifo_inject(s->cc_fifo, frame); frame->pts = s->next_pts++; frame->duration = 1; -- 1.8.3.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".