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 0CAC4458FE for ; Mon, 27 Mar 2023 14:37:33 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC6F968CAEF; Mon, 27 Mar 2023 17:37:31 +0300 (EEST) Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [85.215.255.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 06CF268C461 for ; Mon, 27 Mar 2023 17:37:24 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; t=1679927844; cv=none; d=strato.com; s=strato-dkim-0002; b=ATvkYcX7js2CNQ6M7q+JZo7p8/PtB4oLRCDgUG+19u6KmS46MU+WL9KCrUgzMlpk+i IfWeQGa2lxrS1BQLm6ESy2ISnQQP2fWAb9LkBWmVg2u5e7Kd8Ul7w187al7OHXqXQpkn S6WfYScJzzr8pCWixXGq5RE2V67kDQY0E0EK7aNSNp3ZqBO8WY7AQ8nHkvojnMQovk5O QaANvy8l2gvNX2yNKZl82PZfKcaQGA6LhkNii+MOZR4/rrSEjoSQ+nPfbPh68KsuQoyU Z1ysJ47rGYP5ys073t5xOMk7e1mnN4u+vjZldLUyakgCszWD7xLt44YXI1Ya27/gXM9p Shaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1679927844; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=s6J9so/MhmYdqGM+NT2GdulGAtQmERtU90SE14Rn1EQ=; b=EOFf0omi7OINkWSRf89H5ei4YRur/Itzm/OEkMChbrH37Ldbf3IrVa/gEVTmZAg49N KqBX7wV/dBdFa49aDFx9IHoqNIqeWBR/jykGUv6uKr0wGW8xLABEpB+wZeGqnP3bUv4i 8oyMs3X5jd6+Op3iWzn+PBB955IuiCL+SyX2RGrSkI5AYDGeZ+b2gWisjFnDjrK9xJCe f/ziCY7m/Cyj3tiBS4QvWBbBjadx3VTexLv2uWIEocW/EKcQfyKx5WtogBoTK8OdNaav KSnojXIkKHnoKVKfqaSa7oiwdvqF8IMbPNs69/8zCZGL8Ks3/s4PrZj9Oz0oVmoz5p4X 3dPg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1679927844; s=strato-dkim-0002; d=raphael.schlarb.one; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=s6J9so/MhmYdqGM+NT2GdulGAtQmERtU90SE14Rn1EQ=; b=mA1qbnwYZzp/JGuLTHCGKyjLeMwp72Eq/i9kyXb3zWRiB/2jFAqziZlfDsaq1TRwvX Beqe9ZnB+BoCcR4svptU8kFnqTpL/AfoE+vQ8A7ucl8BbfoIdFRnMn5+c8998VpLEFN/ zqV9vNN76f5c1IxpNGUfCmKZTiqyCqrzS/qnR1b1zkgdHqTTCd/1IrmxTrMqafEoo9bN sz3o/T9jxiJdBeUfu4vYvRFLPl8B1+Kr6s5NsnwpImAciEVAzXen9CIidGLeByYVlmVe J+guJ0bQkRu026u0osNzr+VnfAgAdCC5bB3UoqqdHatMz9b9LwOymHjicCs2h7a1rNlt mnYw== X-RZG-AUTH: ":JWICemC6eu9onhfKbZGTjJwkwXmGAZo82ZIOw0E9r5fErADoWDm4ELNez75QlQ/2G0JlcAOauQ==" Received: from archlinux.rrz.uni-hamburg.de.local by smtp.strato.de (RZmta 49.3.1 DYNA|AUTH) with ESMTPSA id Zce1ebz2REbN1mc (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 27 Mar 2023 16:37:23 +0200 (CEST) From: Raphael Schlarb To: ffmpeg-devel@ffmpeg.org Date: Mon, 27 Mar 2023 16:37:05 +0200 Message-Id: <20230327143705.2371-1-info@raphael.schlarb.one> X-Mailer: git-send-email 2.40.0 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] Add option to set frame length when encoding with libfdk_aac 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: Raphael Schlarb 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: Some specifications require the size of ld/eld frames to be 480 samples instead of the default 512. libfdk_aac provides an option to set an alternative frame size, but it's not exposed via the ffmpeg interface. This patch adds a frame_length option to solve this problem. --- Thank you, this really makes more sense. Here an updated version. libavcodec/libfdk-aacenc.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index eb97e0fb41..93c26ee082 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -55,6 +55,7 @@ typedef struct AACContext { int metadata_mode; AACENC_MetaData metaDataSetup; int delay_sent; + int frame_length; AudioFrameQueue afq; } AACContext; @@ -78,6 +79,7 @@ static const AVOption aac_enc_options[] = { { "comp_profile", "The desired compression profile for AAC DRC", offsetof(AACContext, comp_profile), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 256, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM }, { "comp_target_ref", "Expected target reference level at decoder side in dB (for clipping prevention/limiter)", offsetof(AACContext, comp_target_ref), AV_OPT_TYPE_INT, { .i64 = 0.0 }, -31.75, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM }, { "prog_ref", "The program reference level or dialog level in dB", offsetof(AACContext, prog_ref), AV_OPT_TYPE_INT, { .i64 = 0.0 }, -31.75, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM }, + { "frame_length", "The desired frame length", offsetof(AACContext, frame_length), AV_OPT_TYPE_INT, { .i64 = 1024 }, 120, 1024, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM }, FF_AAC_PROFILE_OPTS { NULL } }; @@ -166,6 +168,18 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) } } + if (s->frame_length == 1024 && + (aot == FF_PROFILE_AAC_LD + 1 || aot == FF_PROFILE_AAC_ELD + 1)) { + s->frame_length = 512; + } + + if ((err = aacEncoder_SetParam(s->handle, AACENC_GRANULE_LENGTH, + s->frame_length)) != AACENC_OK) { + av_log(avctx, AV_LOG_ERROR, "Unable to set granule length: %s\n", + aac_get_error(err)); + goto error; + } + if ((err = aacEncoder_SetParam(s->handle, AACENC_SAMPLERATE, avctx->sample_rate)) != AACENC_OK) { av_log(avctx, AV_LOG_ERROR, "Unable to set the sample rate %d: %s\n", -- 2.40.0 _______________________________________________ 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".