diff mbox series

[FFmpeg-devel] Audiotoolbox fix missing decoder out properties

Message ID trinity-75315d99-e3b8-4a1c-9038-56530cae6943-1649864234217@3c-app-mailcom-bs11
State New
Headers show
Series [FFmpeg-devel] Audiotoolbox fix missing decoder out properties | expand

Checks

Context Check Description
yinshiyou/commit_msg_loongarch64 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/commit_msg_x86 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

MCC CS April 13, 2022, 3:37 p.m. UTC
This is a repost of the patch by Chris Snowhill who originally sent this patch
on 31 December - which didn't receive any replies. As you can see
on https://trac.ffmpeg.org/ticket/9564 the patch is needed and works perfectly.

I have rebased it and recompiled it.

Original commit description:

Monterey needs mBytesPerFrame and mBytesPerPacket to be set, and I'm
surprised this didn't break any previous system versions.

Fixes bug #9564: Cannot decode xHE-AAC with audiotoolbox (aac_at) on
Mac OS Monterey. Fixes likely bug that none of the AudioToolbox
decoders work on Monterey.
---
libavcodec/audiotoolboxdec.c | 5 +++++
1 file changed, 5 insertions(+)

--
2.35.1
diff mbox series

Patch

diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c
index b8d0e868f7..daccf4abf8 100644
--- a/libavcodec/audiotoolboxdec.c
+++ b/libavcodec/audiotoolboxdec.c
@@ -375,6 +375,11 @@  static av_cold int ffat_create_decoder(AVCodecContext *avctx,
     avctx->ch_layout.order       = AV_CHANNEL_ORDER_UNSPEC;
     avctx->ch_layout.nb_channels = out_format.mChannelsPerFrame = in_format.mChannelsPerFrame;

+    out_format.mBytesPerFrame =
+        out_format.mChannelsPerFrame * (out_format.mBitsPerChannel / 8);
+    out_format.mBytesPerPacket =
+        out_format.mBytesPerFrame * out_format.mFramesPerPacket;
+
     if (avctx->codec_id == AV_CODEC_ID_ADPCM_IMA_QT)
         in_format.mFramesPerPacket = 64;