diff mbox series

[FFmpeg-devel] avcodec/audiotoolboxdec: fix missing decoder out properties

Message ID trinity-27e0b004-82d8-456a-842e-c65087846513-1649916363509@3c-app-mailcom-bs03
State New
Headers show
Series [FFmpeg-devel] avcodec/audiotoolboxdec: fix missing decoder out properties | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished

Commit Message

MCC CS April 14, 2022, 6:06 a.m. UTC
Resubmit: fix title.

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

Comments

MCC CS April 18, 2022, 7:18 a.m. UTC | #1
The patch "avcodec/audiotoolboxdec: fix missing decoder out properties" hasn't been reviewed. Could anyone with some time, please, review this patch? Audiotoolbox decoder on macOS desperately needs this to be useful.
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;