From patchwork Tue May 11 12:38:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ray X-Patchwork-Id: 27720 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp3947961iof; Tue, 11 May 2021 05:48:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz22hLMKW+0/kZPTdQDcFFC7Y5hfjjRETazYEVC26vjgs3v/d6Lr/qsqlV9W/Z1kN9WmlXc X-Received: by 2002:a17:906:3181:: with SMTP id 1mr31928994ejy.36.1620737315666; Tue, 11 May 2021 05:48:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620737315; cv=none; d=google.com; s=arc-20160816; b=dP+rMdkFOnjQKjnzM7vwDgBb1oM41n+Jrdp1AVnKHhXHW0NMVvkSL133m63qQxUBEW OQkUUf35HdJxtIV6MyIUQaYrFi+ZqWbhryV6pAoVvUT13KJA9NI3Weqc2BK9HuKuWMm0 f3uVTL9h/pnOMIrLygfWWoWSPXOFlxW/PMdRoi0hLCDONONE5tvWWNWRQDgtNtN8PckC DbG9ZqrG9KJhtkkq9BzDB3a9Cm2BQwlJ0h/6D55PS2Mj+0bvn2DPRzbO8hg8VXUDxc2b wEjibx+0hi2GudNRTD+8wuKlW9Xe6P+4kqM8tiR65blv3FToP/hkjIx5wWS98uu+VMyB F0hQ== 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:references:mime-version:message-id:to:from:date :dkim-signature:delivered-to; bh=7IR/z0L6g/R1GCE/0uzU+Pi2rld9DMXtiM3h+7ZvcMw=; b=Anbqhg7cOf6ayzp1uut8o5OIRbtlaHXnZrbXr8goaxNwtA8lxovYo+PLITmNNr11C/ X4IeFpAmYA+jYYS9sjATnj9zZXE8DdD1jWzcKmX6NzR0r1C+tNhfSltvgPzZSxZalA92 NF+xmkVGpbZwrD9MdUmu8BWR0E0Jf6SJ+zhwnIL6/RBnm2FpkH5RiBeI8SrzubC5QsFX LtvRgbnNmG2SVF0ONaS4oUweTWMWWrHtWnuk80uQYJPZiCqDhF9xlHoXd0oOxMQF2U4v dayn1VWBETAjiDvHdztH5+W5HxNfa8LTZu3cmu4NWD+tkGCqmFkWlehWn1xYqZOoj0+A X7kw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@yahoo.co.uk header.s=s2048 header.b=s+SbIlHJ; 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 bc22si17079440edb.6.2021.05.11.05.48.35; Tue, 11 May 2021 05:48:35 -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=@yahoo.co.uk header.s=s2048 header.b=s+SbIlHJ; 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 D1AE7680AEB; Tue, 11 May 2021 15:48:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from sonic303-20.consmr.mail.ir2.yahoo.com (sonic303-20.consmr.mail.ir2.yahoo.com [77.238.178.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5BCD56804B3 for ; Tue, 11 May 2021 15:48:25 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1620737304; bh=mylrH6R6omXbl5H7tKr+oDoZjXDwpPhkKBSkO8wkNyM=; h=Date:From:To:Subject:References:From:Subject:Reply-To; b=s+SbIlHJ6sKK8hvcH6lhm0Sl9Md2gRQlglLHNaadnBWuOJ97Rf9o+snNeO/pRuztG5AzMObk3qtmvOLsc5JANa7qZRy7hiRZGN1P2rQc05nowxI7TPDCzVnFQYoXeZBFC6u8DbHzR5no+T/TwzYp49voQKA8jc/1+xwL7GIfHcwPmZw9B6hCJkMkoSB2r986q2w8OKDG4qGSkBon7/fprTe8xL/t3xCwVuUEi1yL/gah1ssCMNIoeYWaMspYN7oyv2kDaNpY3HyYGiQcv3ZRQd2UmMEM3vrl+cyyqZGuquA9sWXVIH+PNDmZgwYcjD6PAQ+QnxvHq8dqusRgvTOBGQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1620737304; bh=4BAZoo9HJROvHsldGLwkQoFB+t7vjXQLqQ6qPXtil1G=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=rarlrRmSj3mL9Yq1xOCEDSBkvAkZPABa0ubcHedvprWMDSgF1AhVeyIKHMdtFqAD6WKS9Wad+Y4kxc5lJt0eyTwhG6DoCNbnetXV9Jrj2IBx/6gFGCrpVfa7SiZ7Xg0z2Q4nsipKIznZjzp0I9z7r0fcH+HwnWWaYtsFSUNzlNiNXTzfMTbDMEHbTlgRqQZafuuCahhyPT+CROxV/N6lUGeZ4mmPE+A/hCqSCDnNja5JETdskIt/R1glkvcvM7SmlodSkbLeUemK/XxuhedlmHrGL1UaA/TpmFvaYc6MDcGWsHafIyN08phtz7tdReu1SSryvAhrrtQbFMs1mzNhZw== X-YMail-OSG: bumBmZ8VM1lTfWHqoXuH2l0a.oB25CwZWSD.EoscjE5Hns8wvLRM8JDG6nQkqj2 KAsUNl68NQNiGTbQBENCx0UI8.lmJIOb7ndwEc2He.zjTHWaZYXidgj5XAb9OLDQfFxfPwzzxAOh WOBOPEjrnsYP3Zs.I7LQhhZkHU4Em2Ix9YS5KZWFqfVpJuRXC3LodURPR234.Sjn1uE7vPZA1Eme 8UWPYuRJ1gsANfiZHyhOhtR39nwJKaugbx3KLORAIp8_ly_93Hvp_3dMKPLlJmXf8rYTvNaEDmwx u5XykCCiGg8Ac3JTZlv1pbGeg5ctZXuqfLrxrnsQMLwy2KD0wPEeMSMm5bq_Mov7Qynu13qntvf_ PpYKj2wnVLaAwR4XplGqUtK6U5ts3SZ_F_p81l01Wsk6d.XHckj0LX8zUtWRPeAnzPmCRHks3dIZ glG8b9LnJlivTrqZodtRi4dsh.KqBk0_VkDl7.Ghd3ksdFW_om9cGwSyl2IBsOkYsMXOxA2cKfoM nl4_LWnspJCV5ABOAetMR0jSXA3CqFSS1J1Bylcf74UN1y3DywmGms7Jp.y7nAmQR0fNs4zYkcBR f37pgQTdRpVyhoEElISxrNMQlCj1JQGipl3urNxxUX5Y4sMszAjfeAj2s4l6zcjn46TkCJY79N1h 5pBRg7smvhQ0t_pLKV38HASso3A5MiW1fX6ajMKGrh0dlxmxHX_mzL6Zf59EHP7cCBCDug4OP9Yn bl1E_YJRQ5Nt7MnFc8U4Kly6_LZ1507w9y4vxdS0KfJqwS8ufMlmLkltuuaTtLWUQhLyS7xddqhA cps5ySlRrPM6qyeX_.yvKSJCTDGNFYlQSLxaCN.pxumHUngdYORR1mGC_Hr1vpPExvoVKdjF5o7L XqsCws0dDEizcnwUb1J71yqHOpL.IWv55vGiQ.4h30neHbpZJeRuLXsppYIXRoV6VCnDW8h4HB.D tCqB5XaCbs7iMccNSM9LL5_vZLw8xvCyb1.6GiEnW1eXuqNpAsA7kElO404haa8Nh1vM3z1kOffr aNjHF3u0QaNWzzJy4IJkgGd5Ffqrh4HiZAt1N4GDiJI1LTOaVRQMHJLfIPunJXhaea0Q6M0OvWXh IPkLYvaoqqdG.NCL7f86sWiTb8E211l4GTZUCW2Z9YaarJhXeLYCPBFErPXCxSwLhzCOPhSvXqWe cwyDY6v9YzwvYOOLmN6wwSnhfpsuxT1JiuQuK8VV9CjvSPjNB97JxiFPvX.D1Jgn0ygy_pkC8X2I xJtkp8AN33.n4nI9ykAizIzMmT6zXY7oXAytLWfg6IHRvU55o2L2NS_uZeQomV72aVD62u_Wps_F Z2mkfzzcmPeewl7IB85J168MXUGb5XNSiigEekrmeEBR7UzMoGlrOqeT5UlCaMre7uANOaQR4d.L Zf9wDSJVCeryzL8TX.DzQLj4X5lX_K.VO2n_yZPSJoTkvXWkEO4Tgk8LluRn7j5Wlsdh1pSJloTG t0pVsUfc22hWVtloF2dlaV9SVMInjU29ftXry_3U9HZQa9_iBXZmFgTJmN52ZOD90wJP3hhNmari bYM320smZ78cNg3WYHUlfuTWyFuJAoYvkqb_eZLe2LQhZpdvtIKsWqv008feFp.S8nGq4ZS5Bhz0 Pzw6m1Gz77okxqxQ.ArX4AxmiPaI212QAJs_hhjvspKVGF1QOSOGc3D9YwVRsLc.4z4bgZ4tXAi5 cNANxt1Nwysk69ZlPeCfWnTln6SzkfouPIfP9invwBunqgQ3jvGcyubQnnv1CLDVTY7mz4A2Exif hFFgb6GMJCnTWE69e6JzXtRUYNdNJ2W83bltfGhOQNZmF0cHycEXbTjNUq1Oy3pA7.oTxkO.Gp4g GkBeJK7FTpvSc5XCTg7XGNuD2slzEPmeasYOvFRvpBsZpE_x30o9T8PnTOvbdlV0.JEmHDYIHM2v jHGCPS9GqNiZVVajwcrX9sZuFATJ1IurfCkk6Dsyn0ZL5x2jO33RiUEzRL4f8A.i_SgtvVsNpHuY tfp5dNssQcxoaCRdVlJdniBzRE.xXd2tw3oSBIRPhI44G2ijrgF7oUscIVJCgNTudxeAN8zCFv6V 1w_YVyOTVNlDc.xfuDjlX7Exk314XcpMFgU5vhXufAjEWmxIcTXUBKkH3rDb6tAHj9ndldWIwJ1_ WQsbEyXgppQdwkdBpzz52AChXYVGodeMARtsmPJCxexXn240vokAoYdPHeCndK37NMb1sPVkldIO 5r3K459Ml.ds971PuFuh3PeuhW7AIO0MZEFQ7cqJ9DT5Bu0i9eFqt.T_YXycy4o_6Ily6GJf.8Y4 als7EaKcy.Lceg4B4WWGMtI3Q2Vdp.4lJB6rRadbyt_yzsZoeCp89bCv3aKVINUHegtTaeHwZ546 0AgDat4snfS4SaUNtgkxuGJTHQGWCjuk2AIP163Iv77RZSuBfzebxd6slWDqA14eqKzvNn3xjJ2N XqXW7t.sLmQhU1zL9XJcwHds4Xgh87dX8JQyIr7olN1bkHQ-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Tue, 11 May 2021 12:48:24 +0000 Date: Tue, 11 May 2021 12:38:17 +0000 (UTC) From: Ray To: "ffmpeg-devel@ffmpeg.org" Message-ID: <135941359.4438424.1620736697152@mail.yahoo.com> MIME-Version: 1.0 References: <135941359.4438424.1620736697152.ref@mail.yahoo.com> X-Mailer: WebService/1.1.18231 YMailNorrin Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0 Subject: [FFmpeg-devel] [PATCH]: examples/transcode_aac.c - Do not use global pts for frame pts counting 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: 6W/RPLVKSJ9v The example transcode_aac.c uses a global pts for counting.  For libavcodec novices this can cause them to overlook this and result with incorrect "start" times of output files if called multiple times (see user error resulting in bug report https://trac.ffmpeg.org/ticket/9228) From 52cbed063ee54e667905ca243e8ee4a811a108dc Mon Sep 17 00:00:00 2001 From: whatdoineed2do/Ray Date: Tue, 11 May 2021 13:16:48 +0100 Subject: [PATCH] Do not use global pts for frame pts counting Signed-off-by: whatdoineed2do/Ray ---  doc/examples/transcode_aac.c | 18 ++++++++++--------  1 file changed, 10 insertions(+), 8 deletions(-) -- 2.26.3 diff --git a/doc/examples/transcode_aac.c b/doc/examples/transcode_aac.c index c9badaa561..7f6148fa15 100644 --- a/doc/examples/transcode_aac.c +++ b/doc/examples/transcode_aac.c @@ -648,8 +648,6 @@ static int init_output_frame(AVFrame **frame,      return 0;  }   -/* Global timestamp for the audio frames. */ -static int64_t pts = 0;    /**   * Encode one frame worth of audio to the output file. @@ -663,6 +661,7 @@ static int64_t pts = 0;  static int encode_audio_frame(AVFrame *frame,                                AVFormatContext *output_format_context,                                AVCodecContext *output_codec_context, +                              int64_t* pts,                                int *data_present)  {      /* Packet used for temporary storage. */ @@ -675,8 +674,8 @@ static int encode_audio_frame(AVFrame *frame,        /* Set a timestamp based on the sample rate for the container. */      if (frame) { -        frame->pts = pts; -        pts += frame->nb_samples; +        frame->pts = *pts; +        *pts += frame->nb_samples;      }        /* Send the audio frame stored in the temporary packet to the encoder. @@ -734,7 +733,8 @@ cleanup:   */  static int load_encode_and_write(AVAudioFifo *fifo,                                   AVFormatContext *output_format_context, -                                 AVCodecContext *output_codec_context) +                                 AVCodecContext *output_codec_context, +                                 int64_t* pts)  {      /* Temporary storage of the output samples of the frame written to the file. */      AVFrame *output_frame; @@ -759,7 +759,7 @@ static int load_encode_and_write(AVAudioFifo *fifo,        /* Encode one frame worth of audio samples. */      if (encode_audio_frame(output_frame, output_format_context, -                           output_codec_context, &data_written)) { +                           output_codec_context, pts, &data_written)) {          av_frame_free(&output_frame);          return AVERROR_EXIT;      } @@ -790,6 +790,8 @@ int main(int argc, char **argv)      SwrContext *resample_context = NULL;      AVAudioFifo *fifo = NULL;      int ret = AVERROR_EXIT; +    /* timestamp for the audio frames. */ +    int64_t pts = 0;        if (argc != 3) {          fprintf(stderr, "Usage: %s \n", argv[0]); @@ -850,7 +852,7 @@ int main(int argc, char **argv)              /* Take one frame worth of audio samples from the FIFO buffer,               * encode it and write it to the output file. */              if (load_encode_and_write(fifo, output_format_context, -                                      output_codec_context)) +                                      output_codec_context, &pts))                  goto cleanup;            /* If we are at the end of the input file and have encoded @@ -861,7 +863,7 @@ int main(int argc, char **argv)              do {                  data_written = 0;                  if (encode_audio_frame(NULL, output_format_context, -                                       output_codec_context, &data_written)) +                                       output_codec_context, &pts, &data_written))                      goto cleanup;              } while (data_written);              break;