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 0188745038 for ; Thu, 30 Mar 2023 22:26:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 082D768C2D1; Fri, 31 Mar 2023 01:25:57 +0300 (EEST) Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [81.169.146.161]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EAA6068C123 for ; Fri, 31 Mar 2023 01:25:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; t=1680215149; cv=none; d=strato.com; s=strato-dkim-0002; b=YOlVGZzmqi02zFtOGor1DcSUdXmQWQvnMUwdJ9je+QWi95cSuYeKNnOz6eov8Rb2iv XYau/AakIaWaEmudFSG+MvdEfVsBh5hdEWm4JBo6Q+kv4k3E7en8cdX7/nVXQh0JCw/C mTOKRFL34l+CI6yyVAkdSUD9nkgK07jIw41ux+4TCNVTisiqM0g5aouoD6l2EY9g9o7D oK1x6e3n1AWctjN7kVbEINj7o8S7ZrWMnqZXscC02GkhnVq4ykK6JLlJ1BEPa1kt+aBh 38ZpRyftd/EgOiWPKEAMi3UiQRoFNCVPsUC4+z64iCwkg+dA//NebDYv67n9t2xRcODj oeGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1680215149; 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=tYUYrlZVUS7JyAIrEWE9hrOvkDtiwSCR8XtJCfLII98=; b=KgwOSRDDXxstWYOq5kWB5bz2v9Vbh2H5ETWyNKYq3rdYn1PZtqQYza34qkZ/5iJNum SHVhn4hN9JK9XIxK5+PZCqU86T+Xg4sowhGTpuElfNR1sPWGRI3KW8KsOy5lfg6tnLOU H72tKHeG4HMKfimrl+px61ZoHoedrNEm4OwlVYwPU2c5hN02Su3VpOGw/1V9HhvMD1aE pwotF45jK73UdqevccFP59XitvECXYoMeL166j7MbXAVGR0djhr6bbgD4VXMcSbm5/mD xGpt5uSYNSVhfY4Zxqtg7eaXZvYRcpY3aS0Dc4TlqU8y4fFOOMYBPvO/S4HfV0Hqqj8m g6Ig== 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=1680215149; 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=tYUYrlZVUS7JyAIrEWE9hrOvkDtiwSCR8XtJCfLII98=; b=MX73lZgRnE0v+fdvME4l70s4LlKpLAICbbgSUeumhRO/V6alLDZz7a2YncUZrlp6oJ Q+ojqr8RwkEV10vLDLNYok3vl3bZMznMJz/Vbokc+Fq5WeS6TBRsCPIOTVa2NhbEv4PO ZLXhVS2MtWF0sCWDkqKeZeiIpnnNhoRRtqlRe97ESyW4jG+MT1O+Oi04N9OiRHx3BMJa rYfImu96Z3udrW61A9XBHtkBUI1vsWVsaB7ks3eKwInl15fP4pSm3ulk2/Z4rr32UBN2 r0eecJDCdtDT/vVFcgwn89PpXTAe5jWuGbL+WNxhKI0TCPSSF6jemgeUi3ZDMX1CHDFz 8Ggw== X-RZG-AUTH: ":JWICemC6eu9onhfKbZGTjJwkwXmGAZo82ZIOw0E9r5fErADoWDm4ELNez75QlQ/2G0JlcAKeuQ==" Received: from archlinux.rrz.uni-hamburg.de.local by smtp.strato.de (RZmta 49.3.1 DYNA|AUTH) with ESMTPSA id Zce1ebz2UMPnMDU (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Fri, 31 Mar 2023 00:25:49 +0200 (CEST) From: Raphael Schlarb To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 Mar 2023 14:27:41 +0200 Message-Id: <20230330122741.56060-1-info@raphael.schlarb.one> X-Mailer: git-send-email 2.40.0 In-Reply-To: <7db40e0-1b9f-b14c-51-10e38ee25a9@martin.st> References: <7db40e0-1b9f-b14c-51-10e38ee25a9@martin.st> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4] avcodec/libfdk-accenc: 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. Signed-off-by: Raphael Schlarb --- Adjusted according to Martin's suggestion libavcodec/libfdk-aacenc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index eb97e0fb41..954b8e06d0 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 = -1 }, -1, 1024, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM }, FF_AAC_PROFILE_OPTS { NULL } }; @@ -166,6 +168,15 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) } } + if (s->frame_length != -1) { + 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".