The branch, master has been updated
via 15a9c8dea32048d9746329430313f5700ba74ff3 (commit)
from ab7d1c64c9aa9186acb1d988d020e59f2d3defce (commit)
- Log -----------------------------------------------------------------
commit 15a9c8dea32048d9746329430313f5700ba74ff3
Author: Andreas Rheinhardt <[email protected]>
AuthorDate: Tue Sep 30 18:53:08 2025 +0200
Commit: Andreas Rheinhardt <[email protected]>
CommitDate: Sat Oct 4 06:07:37 2025 +0200
avcodec/liblc3enc: Avoid allocating buffer to send a zero frame
liblc3 supports arbitrary strides, so one can simply use a stride
of zero to make it read the same zero value again and again.
Signed-off-by: Andreas Rheinhardt <[email protected]>
diff --git a/libavcodec/liblc3enc.c b/libavcodec/liblc3enc.c
index 66007a90f3..72c117b993 100644
--- a/libavcodec/liblc3enc.c
+++ b/libavcodec/liblc3enc.c
@@ -137,7 +137,6 @@ static int liblc3_encode(AVCodecContext *avctx, AVPacket
*pkt,
LibLC3EncContext *liblc3 = avctx->priv_data;
int block_bytes = liblc3->block_bytes;
int channels = avctx->ch_layout.nb_channels;
- void *zero_frame = NULL;
uint8_t *data_ptr;
int ret;
@@ -152,25 +151,20 @@ static int liblc3_encode(AVCodecContext *avctx, AVPacket
*pkt,
return 0;
liblc3->remaining_samples = 0;
- zero_frame = av_mallocz(avctx->frame_size * sizeof(float));
- if (!zero_frame)
- return AVERROR(ENOMEM);
}
data_ptr = pkt->data;
for (int ch = 0; ch < channels; ch++) {
- const float *pcm = zero_frame ? zero_frame : frame->data[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);
lc3_encode(liblc3->encoder[ch],
- LC3_PCM_FORMAT_FLOAT, pcm, 1, nbytes, data_ptr);
+ LC3_PCM_FORMAT_FLOAT, pcm, stride, nbytes, data_ptr);
data_ptr += nbytes;
}
- if (zero_frame)
- av_free(zero_frame);
-
*got_packet_ptr = 1;
return 0;
-----------------------------------------------------------------------
Summary of changes:
libavcodec/liblc3enc.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
hooks/post-receive
--
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]