From patchwork Sat Sep 2 15:19:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Sabatini X-Patchwork-Id: 43474 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp226442pzb; Sat, 2 Sep 2023 08:21:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGUPgsWHJu68F7955eIRuTDFLzJrEPCtXQtLy7yc4BAPcqpuGWmOtWj0bEHyj2sOpYMiR76 X-Received: by 2002:aa7:c95a:0:b0:52a:841:bc58 with SMTP id h26-20020aa7c95a000000b0052a0841bc58mr4008755edt.30.1693668087455; Sat, 02 Sep 2023 08:21:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693668087; cv=none; d=google.com; s=arc-20160816; b=ZU8Bl968da3h293Vb0b4YEt8s2t/XDfwwNZc3NOcJMDvcMz/A6IFbmJF/aKI1pubGD BfpIfDC1VPqKmB5XY3hZNEvi2/vM2WJkcmIOrE4zSwjTTeZofojIOgMIzyu/BRtv3JYe qI17bhoTQCfxGrKVFH8NonbtNzQYF46nHX5ULonp9kN7IU2Dp3uj7s+vxnl61NDr1WWh r6HuXZd5Bdm+d80uTQvduJSew+kDrHoak4lX1of8RZuuNVsLE6pFOzju7BO2u/01MtRr Mjcwwkm5TCXRj3+u1zVXwoMlg80RHuAKfNpSGJ5v4b+lGtpxe2v2ctbnJqUvy4oxnXDX 9d0w== 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=fPiFYvSUl6Wh93rKhm6MjXtpVt7oK5dsOXRxUWlt1sI=; fh=QdWxt2OToL83TTnLQn0lGhLakV7i1QyAJdC8te7qN0E=; b=i3VzdJVOfKDxA4j/2hl3pX29mPTaN/z2l4slBqQjL+4FAPKj+LUqGal8iXcubxrWtL BkIWMcR9vUdeJNi8VV0Gyg90rYc8BHdP0BNBxQfoksFvgf2ABsuOQycbRd0ekPnTJ1ju dajd+IXLWvYyHD1kPA2VNKI0LmwoUa9R8vNR74rU0GfD0s97k9MYqd7oE3Ir8ICzmW++ n4hSGkXqow8NuEmHPpAzQiV/m33pkwEp/3is9mQM3uzAH6NzwGtTxnaqrMHDL3jS8pDS 1J5eN9rSa8W/PFr9bA4Tdt35n/VY6Mjm2nQL0XnZUtme5Akp0ZrrsYvTVsYtI9IBCNcu eiEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=LqcUZE3P; 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 j14-20020a50ed0e000000b0052a6759bcc2si3896285eds.21.2023.09.02.08.21.25; Sat, 02 Sep 2023 08:21:27 -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=20221208 header.b=LqcUZE3P; 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 020E168C815; Sat, 2 Sep 2023 18:19:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0DF2068C7DF for ; Sat, 2 Sep 2023 18:19:44 +0300 (EEST) Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-401bbfc05fcso479455e9.3 for ; Sat, 02 Sep 2023 08:19:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693667982; x=1694272782; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GkVGkAGXOclUiiPjBHAdvzMybOtrmeAkvI/00gtIB4c=; b=LqcUZE3PejeAKOHd7UEkYixPbugyVmF2IKfeRPGMz5PWeVevqA9IFrZIs1QDUxZDBG /GzcZcMUxMkGmnn59L9pcUU/13Kspjq/n+o8GKvC4ZpWRfhFkaGYUOUZVT7q0G+1A7fD 6EUeKf4Hr2C7M+dvCAyc55K8lgckOopgxFOYCXRWsuZvk1CK9MelF2BpYiTsGwv6tZzW 9YQrcmrcHikX5mtc4cJaooL2AJVXU1N6uL/F0Q5iut2RzUPgJklIHiNGFI3OWtkWHEdx nmcwTNbg3ER9ERBrFgiy/8k8avbKUqDD90j5VADh8vrI4wDM1peOOZe//9fe6YMy+tZU 3lww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693667982; x=1694272782; h=content-transfer-encoding:mime-version: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=GkVGkAGXOclUiiPjBHAdvzMybOtrmeAkvI/00gtIB4c=; b=bfU+7N7ZkKziuVTiwVNOeFPhOePUebnHQxnOor2c7VtQ1LMukU05qk8WlUmLcQXH9S UW6oSiaJ3oOZOhSApcEZshZ4jGnKckao8lC8xOVXXKF7UYgKDfDsGGewx0UJKJhj+REH 6wJ47DMDFiKj2/P+azxWFKWF0BMAU+syokoUt30zVC7LsXf4Irw0Axq1dYWZdeRyJ68I qJfF78yinXUCyaB4P6OUg3ynaKyjjI3xkWbAMhy25Op3S7u+Y/wfEkRdNT+EFbErKIAF n8cibhxkaNOaWH94Gxr5LoWiAD9qseAWLCLoKmjAul+8nwCl0JnkeFzJdLjaMtRMAwt+ AHDA== X-Gm-Message-State: AOJu0Yy5KKaKTMXwrWjLXExWc9HGSWToHFqljv3iSRGnDIVDtXonaZHO Tvla8vyB3qOP5sHvgJOB7tq3h7ie/6Q= X-Received: by 2002:a05:600c:2158:b0:401:bdd7:499d with SMTP id v24-20020a05600c215800b00401bdd7499dmr3944132wml.25.1693667982474; Sat, 02 Sep 2023 08:19:42 -0700 (PDT) Received: from mariano ([82.84.194.139]) by smtp.gmail.com with ESMTPSA id k15-20020a05600c0b4f00b003fee6f027c7sm11256765wmr.19.2023.09.02.08.19.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Sep 2023 08:19:37 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id 54D42BFCE8; Sat, 2 Sep 2023 17:19:31 +0200 (CEST) From: Stefano Sabatini To: FFmpeg development discussions and patches Date: Sat, 2 Sep 2023 17:19:17 +0200 Message-Id: <20230902151921.1712373-8-stefasab@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230902151921.1712373-1-stefasab@gmail.com> References: <20230902151921.1712373-1-stefasab@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/11] doc/examples/transcode: introduce timestamp logging 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: Stefano Sabatini Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: cXqDqAM7P5a9 Aid timestamp debugging. --- doc/examples/transcode.c | 43 +++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c index 21ea14b614..5671c6664b 100644 --- a/doc/examples/transcode.c +++ b/doc/examples/transcode.c @@ -37,6 +37,7 @@ #include #include #include +#include static AVFormatContext *ifmt_ctx; static AVFormatContext *ofmt_ctx; @@ -435,6 +436,26 @@ static int init_filters(void) return 0; } +static void log_packet(AVPacket *pkt, const AVFormatContext *fmt_ctx, const char *tag) +{ + AVRational *time_base = &fmt_ctx->streams[pkt->stream_index]->time_base; + + av_log(NULL, AV_LOG_INFO, + "%s [pkt] stream:%d tb:%d/%d pts_time:%s\n", + tag, pkt->stream_index, time_base->num, time_base->den, + av_ts2timestr(pkt->pts, time_base)); +} + +static void log_frame(AVFrame *frame, int stream_index, const char *tag) +{ + AVRational *time_base = &frame->time_base; + + av_log(NULL, AV_LOG_INFO, + "%s [frame] stream:%d tb:%d/%d pts_time:%s\n", + tag, stream_index, time_base->num, time_base->den, + av_ts2timestr(frame->pts, time_base)); +} + static int encode_write_frame(unsigned int stream_index, int flush) { StreamContext *stream = &stream_ctx[stream_index]; @@ -443,16 +464,16 @@ static int encode_write_frame(unsigned int stream_index, int flush) AVPacket *enc_pkt = filter->enc_pkt; int ret; - av_log(NULL, AV_LOG_INFO, "Encoding frame\n"); /* encode filtered frame */ av_packet_unref(enc_pkt); - if (filt_frame && filt_frame->pts != AV_NOPTS_VALUE) + if (filt_frame && filt_frame->pts != AV_NOPTS_VALUE) { filt_frame->pts = av_rescale_q(filt_frame->pts, filt_frame->time_base, stream->enc_ctx->time_base); + log_frame(filt_frame, stream_index, "encoder <-"); + } ret = avcodec_send_frame(stream->enc_ctx, filt_frame); - if (ret < 0) return ret; @@ -468,8 +489,8 @@ static int encode_write_frame(unsigned int stream_index, int flush) stream->enc_ctx->time_base, ofmt_ctx->streams[stream_index]->time_base); - av_log(NULL, AV_LOG_DEBUG, "Muxing frame\n"); /* mux encoded frame */ + log_packet(enc_pkt, ofmt_ctx, "muxer <-"); ret = av_interleaved_write_frame(ofmt_ctx, enc_pkt); } @@ -481,8 +502,11 @@ static int filter_encode_write_frame(AVFrame *frame, unsigned int stream_index) FilteringContext *filter = &filter_ctx[stream_index]; int ret; - av_log(NULL, AV_LOG_INFO, "Pushing decoded frame to filters\n"); /* push the decoded frame into the filtergraph */ + if (frame) { + log_frame(frame, stream_index, "filters <-"); + } + ret = av_buffersrc_add_frame(filter->buffersrc_ctx, frame); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Error while feeding the filtergraph\n"); @@ -491,7 +515,6 @@ static int filter_encode_write_frame(AVFrame *frame, unsigned int stream_index) /* pull filtered frames from the filtergraph */ while (1) { - av_log(NULL, AV_LOG_INFO, "Pulling filtered frame from filters\n"); ret = av_buffersink_get_frame(filter->buffersink_ctx, filter->filtered_frame); if (ret < 0) { /* if no more frames for output - returns AVERROR(EAGAIN) @@ -505,6 +528,8 @@ static int filter_encode_write_frame(AVFrame *frame, unsigned int stream_index) filter->filtered_frame->time_base = av_buffersink_get_time_base(filter->buffersink_ctx); filter->filtered_frame->pict_type = AV_PICTURE_TYPE_NONE; + + log_frame(filter->filtered_frame, stream_index, "filters ->"); ret = encode_write_frame(stream_index, 0); av_frame_unref(filter->filtered_frame); if (ret < 0) @@ -549,13 +574,11 @@ int main(int argc, char **argv) if ((ret = av_read_frame(ifmt_ctx, packet)) < 0) break; stream_index = packet->stream_index; - av_log(NULL, AV_LOG_DEBUG, "Demuxer gave frame of stream_index %u\n", stream_index); + log_packet(packet, ifmt_ctx, "demuxer ->"); if (filter_ctx[stream_index].filter_graph) { StreamContext *stream = &stream_ctx[stream_index]; - av_log(NULL, AV_LOG_DEBUG, "Going to reencode&filter the frame\n"); - ret = avcodec_send_packet(stream->dec_ctx, packet); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Decoding failed\n"); @@ -569,6 +592,7 @@ int main(int argc, char **argv) else if (ret < 0) goto end; + log_frame(stream->dec_frame, stream_index, "decoder ->"); stream->dec_frame->pts = stream->dec_frame->best_effort_timestamp; ret = filter_encode_write_frame(stream->dec_frame, stream_index); if (ret < 0) @@ -580,6 +604,7 @@ int main(int argc, char **argv) ifmt_ctx->streams[stream_index]->time_base, ofmt_ctx->streams[stream_index]->time_base); + log_packet(packet, ofmt_ctx, "muxer <-"); ret = av_interleaved_write_frame(ofmt_ctx, packet); if (ret < 0) goto end;