From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 493C84004F for ; Mon, 20 Oct 2025 04:08:18 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'VO5Lc+tMA1/eQO4nuGCSzUl0pZ2nxBPHRI0VIxgXL8Q=', expected b'F9s1P7BZabXhkvYp2z9nK69Zr2HQeVlv5yoleUmokiY=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1760933275; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=VO5Lc+tMA1/eQO4nuGCSzUl0pZ2nxBPHRI0VIxgXL8Q=; b=2VUhc+l/uD5vvmaysQubbSa+vbQEn/c8XZzzIWm+PyMvqQ5Juntd+fjLaGBCKnE94ZmkP FTN9bC1n6qf8JXmm7SwcNiiMmSsSgrtgtItZKFrd3PR/0O32/bmGwnWkRjH98fgl94dlczr jbWfnwAdkl+nzkYFLAeIhvsppiF9o0NiySAQOAmjES1AygLJ9ufZCjCuqIBeu6rTculopzq a8og5YgNkuiviDix8hMl2NnZIS1G3VZz+IlvAHeqtuKv9eIEBqYxCu9oO802TNVwX0cYDV7 1qaI7Fgdo1RFX1YaIz1KDAHKmLJQNd02IFk4n2auWeEtS23nymZj65s63mQA== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id D0E8E68F49E; Mon, 20 Oct 2025 07:07:55 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1760933247; b=QD7NKUN8mdguLh/N2NbGIZi+bj3Qs6z3d+1z0ht8sbETR5l57lS9AoRlP+pnKosWsrs0J iCdfmcdmUKNuurlEn2HBRCA6bAOS91UXgO5GUc+NNhH216lyHeCxfhbBiyc/S8m5YXyWmAy 6HK8d9Bl6lVFgXw0bOQFkedlqNrH1OZP66aOArQcB68Nipxz6+ogu3gyyL0/61kYcjJ3RUF +nkjcFbsRuZU1LUSizUlCP2gGvabBDq9vO8WBksEzcIyMXc2wS/ciy+axDXFw7atjpJwlzT 35Z4w13TnZ69wO13tKAToF/iAULZmK6TklUtZJKFvGZ6zT0Noe4NtRAjt+XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1760933247; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=2rf05cQlrBebF6VDlPEd54SL5PdCokKUfuzMO3sntRQ=; b=myv6ayohBbQUVs03ElLYOETTu7dce6dMt6RXv/x1BELz0x7OVEqDGtQjMX09yXN5e7o0M 3RVSggbyvlsL4hMRilBLvjH8bzZUJjxTh2X5ABqpsrlDXDhHmfzpOWRQLCxtNr5iR/jbe6N +kcK0hObl7a9Sc+ob7aRC8IcmPCJYjIxOk5eztcKVxH5/dqNYBtBGo+s+kMaldknPEZvW9u ReLmG9DC7h4pwB0RQHSpIkcribCmEpaKgDRRxn4eoUuqw9EBY0CZPSzWc6/U1/ZS0f/aD18 d/9qruErEqsK/GlSDYUSf0epf3v+C4HM+vSyx4MN5k0NAY+ra5sFQg5eo3vQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1760933239; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=F9s1P7BZabXhkvYp2z9nK69Zr2HQeVlv5yoleUmokiY=; b=vZjBJ2E8dBKE8ZGa6rDsLHeVAqLKnX5qu0af+ruhPyLBey/Yq2TCOzrW9H9QSOyPAxx2C qSGzriagPaMc/5LBzhJyDCSYNW42Hy2g8tVkHKS6KhFYXZuDg4aSRxEyJSelWUzFbaW9B4u ABZPF4xRI3CMQUPx/CPjj8uJnj+hJA/wO13nbDh7n2pgUT5EXcfaWAWfqDaPvcw8vTeb5J9 3WiobkzrNpOG9EmJYrYbUYFFBi9j+ExUg4zOCo7iY+mi52u5QSXYfJneYuqO56ndLNIPer+ xR7rvCBdwiP3G2aNxv5CiDxCkzJwjXRWoFY1cb+t/ip8fuQROpvR4pjAqZow== Received: from 547bf0a948a1 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id B5AE068F2A3 for ; Mon, 20 Oct 2025 07:07:19 +0300 (EEST) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Mon, 20 Oct 2025 04:07:19 -0000 Message-ID: <176093323993.62.14909432623612667434@bf907ddaa564> Message-ID-Hash: ZZKXNSWUHXJWC7IFNU66MUQLHCTDBMFZ X-Message-ID-Hash: ZZKXNSWUHXJWC7IFNU66MUQLHCTDBMFZ X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/liblc3enc: support packed float (AV_SAMPLE_FMT_FLT) input. (PR #20721) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: cenzhanquan1 via ffmpeg-devel Cc: cenzhanquan1 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20721 opened by cenzhanquan1 URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20721 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20721.patch Previously, the LC3 encoder only accepted planar float (AV_SAMPLE_FMT_FLTP). This change extends support to packed float (AV_SAMPLE_FMT_FLT) by properly handling channel layout and sample stride. The pcm data pointer and stride are now calculated based on the sample format: for planar, use frame->data[ch]; for packed, use frame->data[0] with channel offset. The stride is set to 1 for planar and number of channels for packed layout. This enables encoding from common packed audio sources without requiring a prior planar conversion, improving usability and efficiency. Signed-off-by: cenzhanquan1 >>From cbf757c112f67b8835ee56718954a697a7c06330 Mon Sep 17 00:00:00 2001 From: cenzhanquan1 Date: Mon, 20 Oct 2025 12:04:01 +0800 Subject: [PATCH] avcodec/liblc3enc: support packed float (AV_SAMPLE_FMT_FLT) input. Previously, the LC3 encoder only accepted planar float (AV_SAMPLE_FMT_FLTP). This change extends support to packed float (AV_SAMPLE_FMT_FLT) by properly handling channel layout and sample stride. The pcm data pointer and stride are now calculated based on the sample format: for planar, use frame->data[ch]; for packed, use frame->data[0] with channel offset. The stride is set to 1 for planar and number of channels for packed layout. This enables encoding from common packed audio sources without requiring a prior planar conversion, improving usability and efficiency. Signed-off-by: cenzhanquan1 --- libavcodec/liblc3enc.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/libavcodec/liblc3enc.c b/libavcodec/liblc3enc.c index 72c117b993..2c4dff7761 100644 --- a/libavcodec/liblc3enc.c +++ b/libavcodec/liblc3enc.c @@ -138,8 +138,13 @@ static int liblc3_encode(AVCodecContext *avctx, AVPacket *pkt, int block_bytes = liblc3->block_bytes; int channels = avctx->ch_layout.nb_channels; uint8_t *data_ptr; + size_t sample_size; + int is_planar; int ret; + is_planar = av_sample_fmt_is_planar(avctx->sample_fmt); + sample_size = av_get_bytes_per_sample(avctx->sample_fmt); + if ((ret = ff_get_encode_buffer(avctx, pkt, block_bytes, 0)) < 0) return ret; @@ -155,10 +160,15 @@ static int liblc3_encode(AVCodecContext *avctx, AVPacket *pkt, data_ptr = pkt->data; for (int ch = 0; ch < channels; ch++) { - const float *pcm = frame ? (const float*)frame->data[ch] : (const float[]){ 0 }; - int stride = !!frame; // use a stride of zero to send a zero frame int nbytes = block_bytes / channels + (ch < block_bytes % channels); + const void *pcm = frame ? + (is_planar ? frame->data[ch] : + (uint8_t *)frame->data[0] + ch * sample_size) : + (const void *)(const float[]){ 0 }; + + int stride = frame ? (is_planar ? 1 : channels) : 0; + lc3_encode(liblc3->encoder[ch], LC3_PCM_FORMAT_FLOAT, pcm, stride, nbytes, data_ptr); @@ -198,7 +208,7 @@ const FFCodec ff_liblc3_encoder = { .p.priv_class = &class, .p.wrapper_name = "liblc3", CODEC_SAMPLERATES(96000, 48000, 32000, 24000, 16000, 8000), - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_FLTP), + CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_FLT), .priv_data_size = sizeof(LibLC3EncContext), .init = liblc3_encode_init, .close = liblc3_encode_close, -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org