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 51A7A459F4 for ; Tue, 28 Feb 2023 23:08:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D99D168B14C; Wed, 1 Mar 2023 01:08:51 +0200 (EET) Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3D8A968ADF2 for ; Wed, 1 Mar 2023 01:08:46 +0200 (EET) Received: by mail-pl1-f172.google.com with SMTP id p20so10909172plw.13 for ; Tue, 28 Feb 2023 15:08:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=3Wfy7AzeJQX1VOzFtuPY9mcC51aiwhNbvdrr4sLCKa8=; b=B2/E6GZGAfzl+EuMhiMpfWrt1TGfKkwDMeKhM4hv+QzI2Ty/yC60GnIpQx/vDjv2Wo qQBc7kd+LElVcL/zuog9fyYKiTSgV4d7A4gyoh9MIWiwYRqH0Mz7kXV6B2jH/u768A4E dxkT7AipxOKynMYuD0T7GuBIIfaorEhyBBbHXkcX/i3xIrlZxli7GI1pHs9141zmB1+N 6OprcEKQExthE4Xl6M7nunrF8/VprHFgBFwKqKq0DPwcN3LS2RIUpvJAt9nWfQCKYufF YUCKFCNN6nof/KqZrOfmHF4EdtWX8xieALPiyGFJceCQfKLODbiqhQgyA3zCNodRWdeC xmeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=3Wfy7AzeJQX1VOzFtuPY9mcC51aiwhNbvdrr4sLCKa8=; b=Ly3WwIrfzUo0MIMZNbPGgeuz9bhwEEPQioXTK1B5j9Vg/1E8n1tS6hjBVc8lxhfOzu bnfwMRz94rus9EfrF1NOn7XOh2dZHqbl6zyE95TGIo44WrGayWc5fcWTKRAMNWHEf/LW zMGVMKPL1GMBSB4C/EFGOUa4tZK+rAaH/+3EaT8lWt2ekmsH36OTtRQCX515RyTLbHA0 b5P9pjAfZWq4AqT4NP3tRP0/bE0CjCO+hSsEHGZemeDw88i0a+ks1S3gd6azt+ivkvXB VyO7v5kJmqpGLWvaEFVeeg2bPGRNFVAQF7TX0qw2HtTy8svnNIVrIrbnvq6pBcvFhjcx 42JQ== X-Gm-Message-State: AO0yUKVK39AcsV0xmOOey5p/8qdYGEs14GFcd6N4w+48bAWWmRz7ksBf 6LagrMC6cHSH5Ysi0XeIMPj0GpzHjFtyxA== X-Google-Smtp-Source: AK7set/IxtuQ0E4uOyG865tUsLs3iKymO7tae+402wwKqCQMTLJHw2x59cvL2O/8A8CN9qr05R6ciw== X-Received: by 2002:a17:902:e5c9:b0:19e:4bc3:b1ef with SMTP id u9-20020a170902e5c900b0019e4bc3b1efmr830617plf.64.1677625723389; Tue, 28 Feb 2023 15:08:43 -0800 (PST) Received: from jongeegti.c.googlers.com.com (170.102.105.34.bc.googleusercontent.com. [34.105.102.170]) by smtp.gmail.com with ESMTPSA id jn22-20020a170903051600b00195f0fb0c18sm7036988plb.31.2023.02.28.15.08.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 15:08:42 -0800 (PST) From: JonHGee X-Google-Original-From: JonHGee To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 23:08:10 +0000 Message-Id: <20230228230810.4115241-1-JonHGee@gmail.com> X-Mailer: git-send-email 2.39.2.722.g9855ee24e9-goog In-Reply-To: <75b9dd84-a20-e85f-2e1-f37716b780c7@martin.st> References: <75b9dd84-a20-e85f-2e1-f37716b780c7@martin.st> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavcodec/libfdk-aacnc: send encoder delay/padding in packet side data 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: JonHGee 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: Signed-off-by: JonHGee --- libavcodec/libfdk-aacenc.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index 54549de473..954ddab07f 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -21,6 +21,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/common.h" +#include "libavutil/intreadwrite.h" #include "libavutil/opt.h" #include "avcodec.h" #include "audio_frame_queue.h" @@ -46,6 +47,7 @@ typedef struct AACContext { int latm; int header_period; int vbr; + int delay_sent; AudioFrameQueue afq; } AACContext; @@ -368,7 +370,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, int out_buffer_identifier = OUT_BITSTREAM_DATA; int out_buffer_size, out_buffer_element_size; void *in_ptr, *out_ptr; - int ret; + int ret, discard_padding; uint8_t dummy_buf[1]; AACENC_ERROR err; @@ -428,6 +430,27 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, ff_af_queue_remove(&s->afq, avctx->frame_size, &avpkt->pts, &avpkt->duration); + discard_padding = avctx->frame_size - avpkt->duration; + // Check if subtraction resulted in an overflow + if ((discard_padding < avctx->frame_size) != (avpkt->duration > 0)) { + av_log(avctx, AV_LOG_ERROR, "discard padding overflow\n"); + av_packet_unref(avpkt); + return AVERROR(EINVAL); + } + if ((!s->delay_sent && avctx->initial_padding > 0) || discard_padding > 0) { + uint8_t *side_data = + av_packet_new_side_data(avpkt, AV_PKT_DATA_SKIP_SAMPLES, 10); + if (!side_data) { + av_packet_unref(avpkt); + return AVERROR(ENOMEM); + } + if (!s->delay_sent) { + AV_WL32(side_data, avctx->initial_padding); + s->delay_sent = 1; + } + AV_WL32(side_data + 4, discard_padding); + } + avpkt->size = out_args.numOutBytes; *got_packet_ptr = 1; return 0; -- 2.39.2.722.g9855ee24e9-goog _______________________________________________ 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".