PR #20888 opened by James Almer (jamrial) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20888 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20888.patch
This is an extension to WAVEFORMATEX used for some AAC streams, defined in the Windows SDK. Fixes issue #20887. >From 05a6c683e9a3e728bb139f3b2920957c6ff5530c Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Mon, 10 Nov 2025 17:37:58 -0300 Subject: [PATCH] avformat/riff: add support for HEAACWAVEFORMAT This is an extension to WAVEFORMATEX used for some AAC streams, defined in the Windows SDK. Fixes issue #20887. Signed-off-by: James Almer <[email protected]> --- libavformat/riff.c | 1 + libavformat/riffdec.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/libavformat/riff.c b/libavformat/riff.c index 3c12c4e6c3..fc79d0ac21 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -596,6 +596,7 @@ const AVCodecTag ff_codec_wav_tags[] = { /* ADTS AAC */ { AV_CODEC_ID_AAC, 0x1600 }, { AV_CODEC_ID_AAC_LATM, 0x1602 }, + { AV_CODEC_ID_AAC, 0x1610 }, { AV_CODEC_ID_AC3, 0x2000 }, /* There is no Microsoft Format Tag for E-AC3, the GUID has to be used */ { AV_CODEC_ID_EAC3, 0x2000 }, diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c index 2b269b1682..685dffc893 100644 --- a/libavformat/riffdec.c +++ b/libavformat/riffdec.c @@ -149,6 +149,22 @@ int ff_get_wav_header(AVFormatContext *s, AVIOContext *pb, parse_waveformatex(s, pb, par); cbSize -= 22; size -= 22; + } else if (cbSize >= 12 && id == 0x1610) { /* HEAACWAVEFORMAT */ + int wPayloadType = avio_rl16(pb); + if (wPayloadType == 2) + avpriv_request_sample(s, "wPayloadType \"1\" (ADTS)"); + else if (wPayloadType == 3) + par->codec_id = AV_CODEC_ID_AAC_LATM; + avio_skip(pb, 2); // wAudioProfileLevelIndication + int wStructType = avio_rl16(pb); + if (wStructType) { + avpriv_report_missing_feature(s, "HEAACWAVEINFO wStructType \"%d\"", wStructType); + return AVERROR_PATCHWELCOME; + } + avio_skip(pb, 2); // wReserved1 + avio_skip(pb, 4); // dwReserved2 + cbSize -= 12; + size -= 12; } if (cbSize > 0) { ret = ff_get_extradata(s, par, pb, cbSize); -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
