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 CC7914B016 for ; Sat, 22 Nov 2025 23:29:38 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'pdk+zXFOJMwrGtIrjWT2bcQMlKHuw9eCYIDCpSgG5dM=', expected b'drT6HpIqfLEXZtyLA8CairIuK2jyIXrfqHlx6VWGRdo=')) 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=1763854160; 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=pdk+zXFOJMwrGtIrjWT2bcQMlKHuw9eCYIDCpSgG5dM=; b=h/jy5A3q2HSBExf3MvuIqV3LLAtlw8XTTUnlzqyrIcgEI48sX3Xj5Qd84BGOZt6RHAKMh 7F1FvFSYd7dH3d1XW137B2n3d83bLKXKwhbluH7Xegr56S6BiaT63Z8hn3TQDNTZsCzN5mT cVBGt9BpAJnSSisszt12gJn/rE5aNIV9jnhdKboGrI2k00hoZ5FnpSEeiv2GRXlqydQwnq6 gbRXRHoczsS0y+MwqKFBlPbppqi0nav8SG8y9FMeNSxKGwvdbAQz2bMiWdh+sOz9hAZa5R1 3tmhTBSRueIIJJj7htf4ewwM9Lt4P2CwNf3+r6qWx/9cbexstLjjvKIvsFMg== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id ADA9D68FFFD; Sun, 23 Nov 2025 01:29:20 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1763854159; b=aXE1rgzuC6Ghwd4jXGsJs1PqXypOEce/8uBrITNUXa3X2R04hoROZYp3RM/6fGTCB21ov Lm/eUSYM7OdQQ48IbFZjF8ER6P0+dHTGsy/edF9rTEts8ihTat7nt4EvR0ZQDIjxNCDC1g1 /fbxQ6x9s2EqGieMdEEkTee1zcG1r5lloLR45yo62I9g9g9tm6xMmJ4IZ4656sM4i2nCDLR EMPAo9J0Ykb/RW/b33SHG1bnYvZgHK889rrL0pi3hB+S1OzDGi6BGxA5Htmh7aTjunIPm2d PnCtUUIsmI/s4OrtZGfQHGUxMTlumoEL1AwlWPpYKKBHqRX8Y5viOLorstAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1763854159; 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=YnQsmdLa6lsn8+Oa+cXbU69ZZlg+KbWdJF+OvSJOOBk=; b=STARHc+ns4JElD6UrYjBUgVRhkBiiULkOH+41+2D7KsKJy2TX+WwRDAcLPUtmpOUFgueK 2VAUrEbHrfuIBVgTrGD3souPWb+kP6D5ztKMYu15VHdPQk+DJy24Vkta1ky5KMO1ug4v6ss kS6eB8kvHSRcCVdGMVe2aSnD3SXpPICF+8XTIhlRD40QDomEwWbpOOmczhXJMZuBfdW667J I88b+IYEhPUrYiKvwlj6umuc8tLbHPnNZdmrq/ZGyTP5cvtAVhrH8GJlSf6R09r5DAXFjaQ YK/GQOboLwKPYO33aS/Qq168MZ3CoOMHimXkSPMRYfLlNAxvRehmIWfSlFbQ== 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=1763854152; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=drT6HpIqfLEXZtyLA8CairIuK2jyIXrfqHlx6VWGRdo=; b=3HX9DJETtsca7wg167uNa0rhQ3RS3lb4AskeJcGOOWy3XVuz0L3w4EKC/Ys95n8z7QPqD nDtKEtM3O7gNdISO7lVYB7mp4TGp7WKNsOUPcHLPY6jVyq8V7VPsmfLzSCrPu7U1JpE8asO ECDrwCrLpu3eLz9XLYHr5I6fkZPvGqfYbeRquza2gblJ1512cmRbhncYixUwimYhuaQXt6S XkKWl6/dAWXAy6ENskVhqAbRi4xwR9rLBMej3wTxhU2ZvkklnzgM13PHwNjj61sKHPMjGku 5bz+4Nx4JNQQQezkwWaHQNmIUderNJo8RJULfuvgynRTyYxZvrC2+bYKy0JQ== Received: from 55ca25703178 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 56C4368FD73 for ; Sun, 23 Nov 2025 01:29:12 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Nov 2025 23:29:11 -0000 Message-ID: <176385415248.59.13150557062275567884@2cb04c0e5124> Message-ID-Hash: 2FMXABHADPJGVB5ORFBCIOBXABHSP32Z X-Message-ID-Hash: 2FMXABHADPJGVB5ORFBCIOBXABHSP32Z X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation 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 X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/liblc3{dec,enc}: Simplify sample_size, is_planar check, sample fmt selection (PR #20998) 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: mkver via ffmpeg-devel Cc: mkver Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20998 opened by mkver URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20998 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20998.patch >>From e528d76b28240e5502fdea12ad9bf0a583420043 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sat, 22 Nov 2025 23:56:14 +0100 Subject: [PATCH 1/2] avcodec/liblc3{dec,enc}: Simplify sample_size, is_planar check Sample size is always sizeof(float), is planar is a simple if given that these codecs only support float and planar float. Signed-off-by: Andreas Rheinhardt --- libavcodec/liblc3dec.c | 9 +++------ libavcodec/liblc3enc.c | 15 ++++++--------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/libavcodec/liblc3dec.c b/libavcodec/liblc3dec.c index 293325ba2b..a0989c88b0 100644 --- a/libavcodec/liblc3dec.c +++ b/libavcodec/liblc3dec.c @@ -123,8 +123,6 @@ static int liblc3_decode(AVCodecContext *avctx, AVFrame *frame, int channels = avctx->ch_layout.nb_channels; uint8_t *in = avpkt->data; int block_bytes, ret; - size_t sample_size; - int is_planar; frame->nb_samples = av_rescale( liblc3->frame_us, liblc3->srate_hz, 1000*1000); @@ -132,13 +130,12 @@ static int liblc3_decode(AVCodecContext *avctx, AVFrame *frame, return ret; block_bytes = avpkt->size; - is_planar = av_sample_fmt_is_planar(avctx->sample_fmt); - sample_size = av_get_bytes_per_sample(avctx->sample_fmt); + int is_planar = avctx->sample_fmt == AV_SAMPLE_FMT_FLTP; for (int ch = 0; ch < channels; ch++) { int nbytes = block_bytes / channels + (ch < block_bytes % channels); - void *pcm_data = is_planar ? frame->extended_data[ch] : - frame->extended_data[0] + ch * sample_size; + float *pcm_data = is_planar ? (float*)frame->extended_data[ch] : + (float*)frame->extended_data[0] + ch; int stride = is_planar ? 1 : channels; ret = lc3_decode(liblc3->decoder[ch], in, nbytes, diff --git a/libavcodec/liblc3enc.c b/libavcodec/liblc3enc.c index 8bdf6bd5d8..e64963b457 100644 --- a/libavcodec/liblc3enc.c +++ b/libavcodec/liblc3enc.c @@ -138,13 +138,8 @@ 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; @@ -158,14 +153,16 @@ static int liblc3_encode(AVCodecContext *avctx, AVPacket *pkt, liblc3->remaining_samples = 0; } + int is_planar = avctx->sample_fmt == AV_SAMPLE_FMT_FLTP; + data_ptr = pkt->data; for (int ch = 0; ch < channels; ch++) { int nbytes = block_bytes / channels + (ch < block_bytes % channels); - const void *pcm = frame ? - (is_planar ? frame->data[ch] : - frame->data[0] + ch * sample_size) : - (const void *)(const float[]){ 0 }; + const float *pcm = frame ? + (is_planar ? (const float*)frame->data[ch] : + (const float*)frame->data[0] + ch) : + (const float[]){ 0 }; int stride = frame ? (is_planar ? 1 : channels) : 0; -- 2.49.1 >>From b667579ab0cc96c679277f404d83ba682b59c180 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 23 Nov 2025 00:26:07 +0100 Subject: [PATCH 2/2] avcodec/liblc3dec: Simplify sample fmt selection Signed-off-by: Andreas Rheinhardt --- libavcodec/liblc3dec.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/libavcodec/liblc3dec.c b/libavcodec/liblc3dec.c index a0989c88b0..953445ecfa 100644 --- a/libavcodec/liblc3dec.c +++ b/libavcodec/liblc3dec.c @@ -43,14 +43,6 @@ static av_cold int liblc3_decode_init(AVCodecContext *avctx) int ep_mode; unsigned decoder_size; - static const struct { - enum AVSampleFormat av_format; - enum lc3_pcm_format lc3_format; - } format_map[] = { - { AV_SAMPLE_FMT_FLT, LC3_PCM_FORMAT_FLOAT }, - { AV_SAMPLE_FMT_FLTP, LC3_PCM_FORMAT_FLOAT }, - }; - if (avctx->extradata_size < 6) return AVERROR_INVALIDDATA; if (channels < 0 || channels > DECODER_MAX_CHANNELS) { @@ -90,15 +82,8 @@ static av_cold int liblc3_decode_init(AVCodecContext *avctx) (char *)liblc3->decoder_mem + ch * decoder_size); } - avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; - if (avctx->request_sample_fmt != AV_SAMPLE_FMT_NONE) { - for (int i = 0; i < FF_ARRAY_ELEMS(format_map); i++) { - if (format_map[i].av_format == avctx->request_sample_fmt) { - avctx->sample_fmt = avctx->request_sample_fmt; - break; - } - } - } + avctx->sample_fmt = avctx->request_sample_fmt == AV_SAMPLE_FMT_FLT ? + AV_SAMPLE_FMT_FLT : AV_SAMPLE_FMT_FLTP; avctx->delay = lc3_hr_delay_samples( liblc3->hr_mode, liblc3->frame_us, liblc3->srate_hz); -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org