From patchwork Wed Feb 5 11:07:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 17690 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 22ADA44A738 for ; Wed, 5 Feb 2020 13:12:40 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F246968A831; Wed, 5 Feb 2020 13:12:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f68.google.com (mail-ed1-f68.google.com [209.85.208.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1254568A831 for ; Wed, 5 Feb 2020 13:12:34 +0200 (EET) Received: by mail-ed1-f68.google.com with SMTP id f8so1840200edv.2 for ; Wed, 05 Feb 2020 03:12:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=HNkYDY2naanSrcpEk9FVAzhXvH5maRZU/PPRKxsJUkU=; b=GE1qihMd3UpQSznKD8C+XzZMqSWnbvdBHHrfvn0X2anYE9fN0OjYoXLi3AlB7YxT8+ vRKIDXE2VoG7taKTAI5bPBsWIadDU5AVLqLPhzJHax5voVZ32h0jibl4aN5JCf9QW3A0 Ip6mGOGMBcBmB+pIr61CNG9D7JbnljJiEf+w6f0pRJqOBwVw8GKsVXoyKpye6Ip1mRR0 XaXa64grWjGo6d997H1WIVBtA/cyBFP6PFv4sXbFx5Hqd6UgElt5OVMU1p0GjSAx5t++ V6T4GDUi2E1gUzjnzOPWf1VUA6OnBlJ9FsoPjbWVyftbhoOM8hkHej3j5P1Fskap8+N/ Q/Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=HNkYDY2naanSrcpEk9FVAzhXvH5maRZU/PPRKxsJUkU=; b=ZbrmhPJsILFQnYrd/QFp44rHjMHHpaad2LiKQl6HXOguPL8O4ibI8KXN3t0Ny61QRN xeBjgbFYGiwTk9kXpOhaeVuZB2zxuHHRREFR2pm2Fn9ZPsHbSo76gq7o9ZrngwVehz3n BrGNPLGE3igP7bdf7EW8Gr7dCGJPfebdEd70rD27oDKl6RVM4OLoDhhG8IxFSpPv9aWg JjTtP3xHaU3F7KEMinQqiNzDD6fX82G2DmjHPGVQkWGLKTdgmiD/N7On4Rd/x8ddkFJz 0jmKYYzh8q8nGcfi6gvMN/SIwoY5YBL/cuN03XLZYOuozzdCq0FWoc4bMlpG09HkK65Y 6rtw== X-Gm-Message-State: APjAAAUl4VAR2Wr2JsvWryBuBCN/WG9gEs9sLq0/X9Ocz6lGxykGsByA Cvvcusuf2FwwdLPLwhKmAuetpvg0avg= X-Google-Smtp-Source: APXvYqyUkcOsf625v1q+9zu8vYO0uMoRlpANg+41zllYmVHnvxWcBsPVEVHXeaEy37BJQi61KTQbGg== X-Received: by 2002:a2e:7407:: with SMTP id p7mr19750658ljc.106.1580900830317; Wed, 05 Feb 2020 03:07:10 -0800 (PST) Received: from localhost (dsl-tkubng21-58c01c-243.dhcp.inet.fi. [88.192.28.243]) by smtp.gmail.com with ESMTPSA id e5sm6693372lfn.66.2020.02.05.03.07.09 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 05 Feb 2020 03:07:09 -0800 (PST) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 5 Feb 2020 13:07:06 +0200 Message-Id: <20200205110708.64282-1-martin@martin.st> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] libfdk-aacdec: Apply the decoder's output delay on timestamps X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" The delay is normally zero when the level limiter is disabled, but if enabled, there's a small delay. --- libavcodec/libfdk-aacdec.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c index 1abe1d8438..d9b080cf3e 100644 --- a/libavcodec/libfdk-aacdec.c +++ b/libavcodec/libfdk-aacdec.c @@ -57,6 +57,7 @@ typedef struct FDKAACDecContext { int drc_effect; int drc_cut; int level_limit; + int output_delay; } FDKAACDecContext; @@ -115,6 +116,9 @@ static int get_stream_info(AVCodecContext *avctx) } avctx->sample_rate = info->sampleRate; avctx->frame_size = info->frameSize; +#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10 + s->output_delay = info->outputDelay; +#endif for (i = 0; i < info->numChannels; i++) { AUDIO_CHANNEL_TYPE ctype = info->pChannelType[i]; @@ -367,6 +371,11 @@ static int fdk_aac_decode_frame(AVCodecContext *avctx, void *data, if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) goto end; + if (frame->pts != AV_NOPTS_VALUE) + frame->pts -= av_rescale_q(s->output_delay, + (AVRational){1, avctx->sample_rate}, + avctx->time_base); + memcpy(frame->extended_data[0], s->decoder_buffer, avctx->channels * avctx->frame_size * av_get_bytes_per_sample(avctx->sample_fmt));