summaryrefslogtreecommitdiff
path: root/libavcodec/aptxenc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-29 20:25:18 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-09-19 17:05:33 +0200
commitc0d483cecb3ca31574f850c031d66a34a4f2d140 (patch)
tree292b0d523bb40b63df430d566211b81ae0a47651 /libavcodec/aptxenc.c
parent6f22d1965eeab80544ecbb190bc4c379063fa481 (diff)
avcodec/aptx: Use AVCodecContext.frame_size according to the API
Currently the APTX (HD) codecs set frame_size if unset and check whether it is divisible by block_size (corresponding to block_align as used by other codecs). But this is based upon a misunderstanding of the API: frame_size is not in bytes, but in samples. Said value is also not intended to be set by the user at all, but set by encoders and (possibly) decoders if the number of channels in a frame is constant. The latter condition is not fulfilled here, so only set it for encoders. Given that the encoder can handle any number of samples as long as it is divisible by four and given that it worked to set a custom frame size before, the encoders accept any multiple of four; otherwise the value is set to the value that it already had for APTX: 1024 samples (per channel). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/aptxenc.c')
-rw-r--r--libavcodec/aptxenc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/aptxenc.c b/libavcodec/aptxenc.c
index f9347853d2..434a9abf0f 100644
--- a/libavcodec/aptxenc.c
+++ b/libavcodec/aptxenc.c
@@ -257,6 +257,9 @@ static av_cold int aptx_encode_init(AVCodecContext *avctx)
ff_af_queue_init(avctx, &s->afq);
+ if (!avctx->frame_size || avctx->frame_size % 4)
+ avctx->frame_size = 1024;
+
return ff_aptx_init(avctx);
}