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 A9CA6459EA for ; Wed, 1 Mar 2023 08:31:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 013E268A3E1; Wed, 1 Mar 2023 10:31:11 +0200 (EET) Received: from mail8.parnet.fi (mail8.parnet.fi [77.234.108.134]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E30668A31B for ; Wed, 1 Mar 2023 10:31:04 +0200 (EET) Received: from mail9.parnet.fi (mail9.parnet.fi [77.234.108.21]) by mail8.parnet.fi with ESMTP id 3218V1T9013721-3218V1TA013721; Wed, 1 Mar 2023 10:31:01 +0200 Received: from foo.martin.st (host-97-187.parnet.fi [77.234.97.187]) by mail9.parnet.fi (Postfix) with ESMTPS id AC5FEA143A; Wed, 1 Mar 2023 10:31:01 +0200 (EET) Date: Wed, 1 Mar 2023 10:31:00 +0200 (EET) From: =?ISO-8859-15?Q?Martin_Storsj=F6?= To: FFmpeg development discussions and patches In-Reply-To: <20230228230810.4115241-1-JonHGee@gmail.com> Message-ID: References: <75b9dd84-a20-e85f-2e1-f37716b780c7@martin.st> <20230228230810.4115241-1-JonHGee@gmail.com> MIME-Version: 1.0 X-FE-Policy-ID: 3:14:2:SYSTEM Subject: Re: [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-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On Tue, 28 Feb 2023, JonHGee wrote: > 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 LGTM, pushed. // Martin _______________________________________________ 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".