Breaking API change in 1.29.9 — intentional or not?
===================================================
12d7414f7ece191783e54d92beb46e0e182202f6 introduced a breaking API change, `config.allowMidside` => `config. jointmode` that broke compatibility with current Libav (https://code.videolan.org/libav/libav/blob/master/libavcodec/libfaac.c#L118) and maintenance lines of FFmpeg, e.g. 2.8.13 (FFmpeg dropped faac support in 3.2). While Libav could and probably should be updated to reflect this change, it's probably hard to fix this in the maintenance lines of FFmpeg.
I package FFmpeg and related packages for the Homebrew package manager, so I just want to make sure this change is intentional and final before [dropping faac support from our FFmpeg 2.x package](https://github.com/Homebrew/homebrew-core/pull/20546). Thanks for your attention.
[email protected] & ffmbc: drop faac
=============================
I just took a look at #20317 myself. As expected, both won't build with faac 1.29.9, with the same error:
libavcodec/libfaac.c:87:15: error: no member named 'allowMidside' in 'struct faacEncConfiguration'
faac_cfg->allowMidside = 1;
~~~~~~~~ ^
1 error generated.
FFmpeg has dropped faac support in 3.2 (a year ago), so I doubt this will be fixed in the 2.8 line — there won't be anything to backport.
FFmbc is so outdated I consider it stale or dead. After dropping faac, there's still the native AAC encoder:
```console
$ ffmbc -codecs | grep aac
FFmbc version 0.7.2
Copyright (c) 2008-2014 Baptiste Coudurier and the FFmpeg developers
DEA aac Advanced Audio Coding
D A aac_latm AAC LATM (Advanced Audio Codec LATM syntax)
```
which I believe was still experimental when FFmbc was last synced with FFmpeg upstream, so it probably doesn't perform as well as libfaac. I checked FFmbc's `configure` and unfortunately it doesn't seem to support libvo-aacenc or libfdk_aac. If you (one the two remaining FFmbc users) absolutely need faac, you need to urge FFmbc upstream to patch and release, or wisely use `brew switch` / `brew pin`.
Use
```rb
test do
require "pty"
(testpath/"input").write("#end {bye}\n")
PTY.spawn(bin/"tt++", "-G", "input") do |r, _w, _pid|
assert_match "Goodbye", r.read
end
end
```