From patchwork Sat Aug 26 15:11:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 43336 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:906:4f0f:b0:99c:ff93:59c5 with SMTP id t15csp995978eju; Sat, 26 Aug 2023 08:13:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEj6h+W8FiVTorFcoLsHNlR3f3Rj156k/2M+WCmdYh2/If9tFwWtvLqHIwf6BZf7NqrvDC9 X-Received: by 2002:a05:6512:70c:b0:500:9619:d9c9 with SMTP id b12-20020a056512070c00b005009619d9c9mr7190808lfs.61.1693062818509; Sat, 26 Aug 2023 08:13:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693062818; cv=none; d=google.com; s=arc-20160816; b=sLNrrmlgRdpI1d7jTk1+AaNuwgSiZP8W3Odjzvc68QKyJ/NK+p77InI3ZBg6/vD7A0 qQskBu1g2KsWfONgEwE4Np8T1xOllANILNWHkAkP5Z516IpAvggt2oZyRXjlrn7+w3B2 PICWDD8KLCbNOVMAAD7HAA783nMjlCClqXQu97GY7+AYaji0/49tIrwgfkuaofkG+M69 Zc9EC+FqBtdBwZOPlsT4fN176JZhyI+9zFujJdj9u4HL9Ea0a+/TgKYwE4S9rgL7akDi pnHADHaKdVgaDzAsglVG3kRjMLYH2y+PHXzuVVmIIHcAKQ5ipbr3gbvPeYpaAxEfex9I xRbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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:delivered-to; bh=kkYu6HRhpMp2w5MpQkujp9VAIiqSbY4lfn+5Uqgjx2k=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=pSQwXMnOut4Q9xYo8r/sIcYm/E0OeNl3Ta0rgLxkJ73IjH6Bn3Nu9pg0XJi4pgACBG Kki1Iyef8koCzUtFi5Pm7pRFTKiQHMJ/YRfyZP+pevnTzSjydF9496F3iUpA0HJOakSC 1xKIOIED3/WPtclwchSZjnTa0j6ZXu9MP2Q0IcCOGpIWfYM0QYOBFbGGLhBxcA9+ORqy Iz+H3O5AHhtN1hpFwTMqEWGVdByVzDCTagh8gHzUbAZ0teZJjWqV3XzuJmpQ94Circ+Z myDSWkKjuegCHTHjcbDbHxnjUiW6Y5SPsd+m7PApWJ5xcKlsbNE+7Lfu8AkqlyWq/ESU F9uw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id xo11-20020a170907bb8b00b009945658c5b9si963045ejc.811.2023.08.26.08.13.38; Sat, 26 Aug 2023 08:13:38 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 13C1668C4AC; Sat, 26 Aug 2023 18:13:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3124B68C642 for ; Sat, 26 Aug 2023 18:13:11 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id ECE9A2401D3 for ; Sat, 26 Aug 2023 17:13:10 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id jw4OTToGhHSg for ; Sat, 26 Aug 2023 17:13:10 +0200 (CEST) Received: from mail1.khirnov.net (mail1.khirnov.net [IPv6:2a00:c500:561:206::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail1.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 6B9A4240177 for ; Sat, 26 Aug 2023 17:13:10 +0200 (CEST) Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id AC6934100 for ; Sat, 26 Aug 2023 17:15:13 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id B58wiZiVniQy for ; Sat, 26 Aug 2023 17:15:10 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 3E2BF40FA for ; Sat, 26 Aug 2023 17:15:01 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id E9F6A3A174B for ; Sat, 26 Aug 2023 17:11:52 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Sat, 26 Aug 2023 17:11:42 +0200 Message-Id: <20230826151144.24858-16-anton@khirnov.net> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230826151144.24858-1-anton@khirnov.net> References: <20230826151144.24858-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 16/18] fftools/ffmpeg_enc: simplify adjust_frame_pts_to_encoder_tb() signature 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: jLFzHN8aeU4O It does not need an OutputFile and an OutputStream, only the target timebase and the timestamp offset. --- fftools/ffmpeg_enc.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index 4f8c765256..efa940fba9 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -920,16 +920,12 @@ static int do_audio_out(OutputFile *of, OutputStream *ost, return (ret < 0 && ret != AVERROR_EOF) ? ret : 0; } -static double adjust_frame_pts_to_encoder_tb(OutputFile *of, OutputStream *ost, - AVFrame *frame) +static double adjust_frame_pts_to_encoder_tb(AVFrame *frame, AVRational tb_dst, + int64_t start_time) { double float_pts = AV_NOPTS_VALUE; // this is identical to frame.pts but with higher precision - const int64_t start_time = (of->start_time == AV_NOPTS_VALUE) ? - 0 : of->start_time; - AVCodecContext *const enc = ost->enc_ctx; - - AVRational tb = enc->time_base; + AVRational tb = tb_dst; AVRational filter_tb = frame->time_base; const int extra_bits = av_clip(29 - av_log2(tb.den), 0, 16); @@ -946,19 +942,17 @@ static double adjust_frame_pts_to_encoder_tb(OutputFile *of, OutputStream *ost, if (float_pts != llrint(float_pts)) float_pts += FFSIGN(float_pts) * 1.0 / (1<<17); - frame->pts = av_rescale_q(frame->pts, filter_tb, enc->time_base) - - av_rescale_q(start_time, AV_TIME_BASE_Q, enc->time_base); - frame->time_base = enc->time_base; + frame->pts = av_rescale_q(frame->pts, filter_tb, tb_dst) - + av_rescale_q(start_time, AV_TIME_BASE_Q, tb_dst); + frame->time_base = tb_dst; early_exit: if (debug_ts) { av_log(NULL, AV_LOG_INFO, "filter -> pts:%s pts_time:%s exact:%f time_base:%d/%d\n", frame ? av_ts2str(frame->pts) : "NULL", - (enc && frame) ? av_ts2timestr(frame->pts, &enc->time_base) : "NULL", - float_pts, - enc ? enc->time_base.num : -1, - enc ? enc->time_base.den : -1); + av_ts2timestr(frame->pts, &tb_dst), + float_pts, tb_dst.num, tb_dst.den); } return float_pts; @@ -984,7 +978,8 @@ static void video_sync_process(OutputFile *of, OutputStream *ost, AVFrame *frame duration = lrintf(frame->duration * av_q2d(frame->time_base) / av_q2d(enc->time_base)); - sync_ipts = adjust_frame_pts_to_encoder_tb(of, ost, frame); + sync_ipts = adjust_frame_pts_to_encoder_tb(frame, enc->time_base, + of->start_time == AV_NOPTS_VALUE ? 0 : of->start_time); /* delta0 is the "drift" between the input frame and * where it would fall in the output. */ delta0 = sync_ipts - e->next_pts;