The codec library

bAAC

AAC encoding and decoding for Bånder.

bAAC is a C++17 codec library with a C API, a command-line tool and a Node/Electron binding. Explore what it implements and how its recorded measurements compare with other AAC codecs.

Pre-release · Version 0.1.0 · Source-build and API guidance

What it does

A library and an Electron bridge.

Profiles and transports

The package exposes AAC-LC, HE-AAC v1/v2, AAC-LD/ELD and USAC/xHE-AAC. It handles ADTS, LOAS/LATM and configured raw access units, subject to profile restrictions. Raw MP4 sample support does not include an MP4 file demuxer.

Implemented tools and checked interoperability differ. ER RVLC/HCR, LD-SBR and several USAC/spatial tools have approximations, unverified external streams or refused modes. Read the capabilities and limitations before choosing a profile.

Current Bånder integration

Electron's main-process AacService exposes the native binding through registered IPC handlers and a preload bridge. The packaging configuration includes native files. This integration does not establish bAAC as the default playback path in the web application.

Start with the source-build guide, C API and Node-API binding. Public package availability and release binaries are not established by these measurements.

Planned: transcoder and FFmpeg integration

We plan to integrate bAAC into Bånder's server-side transcoder and FFmpeg build, extending its use beyond the Electron application. That work is planned; the current integration described above is the Electron service and bridge.

Recorded quality

Compare the rate and the model score.

These plots compare default constant-bitrate settings on ten TCDAudio14 music excerpts: 48 kHz, 16-bit stereo. Each point is a mean over the ten excerpts. The horizontal axis uses mean measured file rate, including transport framing; the tables also show the nominal setting.

AAC-LCQuality · two models

Five encoders, five nominal settings: 64, 96, 128, 192 and 256 kbit/s.

AAC-LC: PEAQ Basic against measured bitrate

AAC-LC: PEAQ Basic against measured bitratePEAQ Basic score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.-3.3957.52-2.45111.93-1.51166.35-0.57220.770.37275.18Measured bitrate (kbit/s)PEAQ Basic score · higher is betterbAAC, nominal 64 kbit/s, measured 63.9082 kbit/s, PEAQ Basic -3.0728bAAC, nominal 96 kbit/s, measured 95.9673 kbit/s, PEAQ Basic -1.4696bAAC, nominal 128 kbit/s, measured 127.9429 kbit/s, PEAQ Basic -0.6817bAAC, nominal 192 kbit/s, measured 191.9825 kbit/s, PEAQ Basic -0.0731bAAC, nominal 256 kbit/s, measured 255.7694 kbit/s, PEAQ Basic -0.0229bAACFFmpeg, nominal 64 kbit/s, measured 67.0168 kbit/s, PEAQ Basic -3.0046FFmpeg, nominal 96 kbit/s, measured 99.26 kbit/s, PEAQ Basic -1.9712FFmpeg, nominal 128 kbit/s, measured 131.7679 kbit/s, PEAQ Basic -1.1367FFmpeg, nominal 192 kbit/s, measured 198.9003 kbit/s, PEAQ Basic -0.3933FFmpeg, nominal 256 kbit/s, measured 262.0786 kbit/s, PEAQ Basic -0.2695FFmpegFDK, nominal 64 kbit/s, measured 64.8356 kbit/s, PEAQ Basic -2.9926FDK, nominal 96 kbit/s, measured 96.7597 kbit/s, PEAQ Basic -1.7063FDK, nominal 128 kbit/s, measured 128.7318 kbit/s, PEAQ Basic -0.7868FDK, nominal 192 kbit/s, measured 192.9015 kbit/s, PEAQ Basic -0.0985FDK, nominal 256 kbit/s, measured 257.1351 kbit/s, PEAQ Basic 0.0539FDKlibxaac, nominal 64 kbit/s, measured 67.0703 kbit/s, PEAQ Basic -2.9359libxaac, nominal 96 kbit/s, measured 98.936 kbit/s, PEAQ Basic -1.6471libxaac, nominal 128 kbit/s, measured 130.9227 kbit/s, PEAQ Basic -0.7397libxaac, nominal 192 kbit/s, measured 192.257 kbit/s, PEAQ Basic -0.2128libxaac, nominal 256 kbit/s, measured 256.2606 kbit/s, PEAQ Basic -0.1746libxaacApple, nominal 64 kbit/s, measured 67.1757 kbit/s, PEAQ Basic -2.9246Apple, nominal 96 kbit/s, measured 99.2713 kbit/s, PEAQ Basic -1.8774Apple, nominal 128 kbit/s, measured 131.2717 kbit/s, PEAQ Basic -0.6738Apple, nominal 192 kbit/s, measured 195.5652 kbit/s, PEAQ Basic -0.0719Apple, nominal 256 kbit/s, measured 259.8179 kbit/s, PEAQ Basic 0.0185Apple
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 25 data points
AAC-LC: PEAQ Basic against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sPEAQ basic ODG
bAAC6463.908-3.073
bAAC9695.967-1.470
bAAC128127.943-0.682
bAAC192191.983-0.073
bAAC256255.769-0.023
FFmpeg6467.017-3.005
FFmpeg9699.260-1.971
FFmpeg128131.768-1.137
FFmpeg192198.900-0.393
FFmpeg256262.079-0.270
FDK6464.836-2.993
FDK9696.760-1.706
FDK128128.732-0.787
FDK192192.902-0.099
FDK256257.1350.054
libxaac6467.070-2.936
libxaac9698.936-1.647
libxaac128130.923-0.740
libxaac192192.257-0.213
libxaac256256.261-0.175
Apple6467.176-2.925
Apple9699.271-1.877
Apple128131.272-0.674
Apple192195.565-0.072
Apple256259.8180.019

AAC-LC: ViSQOL against measured bitrate

AAC-LC: ViSQOL against measured bitrateViSQOL score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.3.3557.523.73111.934.11166.354.49220.774.87275.18Measured bitrate (kbit/s)ViSQOL score · higher is betterbAAC, nominal 64 kbit/s, measured 63.9082 kbit/s, ViSQOL 3.8665bAAC, nominal 96 kbit/s, measured 95.9673 kbit/s, ViSQOL 4.3538bAAC, nominal 128 kbit/s, measured 127.9429 kbit/s, ViSQOL 4.5208bAAC, nominal 192 kbit/s, measured 191.9825 kbit/s, ViSQOL 4.5097bAAC, nominal 256 kbit/s, measured 255.7694 kbit/s, ViSQOL 4.7184bAACFFmpeg, nominal 64 kbit/s, measured 67.0168 kbit/s, ViSQOL 3.4964FFmpeg, nominal 96 kbit/s, measured 99.26 kbit/s, ViSQOL 4.0764FFmpeg, nominal 128 kbit/s, measured 131.7679 kbit/s, ViSQOL 4.2004FFmpeg, nominal 192 kbit/s, measured 198.9003 kbit/s, ViSQOL 4.4798FFmpeg, nominal 256 kbit/s, measured 262.0786 kbit/s, ViSQOL 4.6748FFmpegFDK, nominal 64 kbit/s, measured 64.8356 kbit/s, ViSQOL 3.7709FDK, nominal 96 kbit/s, measured 96.7597 kbit/s, ViSQOL 4.0911FDK, nominal 128 kbit/s, measured 128.7318 kbit/s, ViSQOL 4.2833FDK, nominal 192 kbit/s, measured 192.9015 kbit/s, ViSQOL 4.4662FDK, nominal 256 kbit/s, measured 257.1351 kbit/s, ViSQOL 4.486FDKlibxaac, nominal 64 kbit/s, measured 67.0703 kbit/s, ViSQOL 3.8125libxaac, nominal 96 kbit/s, measured 98.936 kbit/s, ViSQOL 4.1162libxaac, nominal 128 kbit/s, measured 130.9227 kbit/s, ViSQOL 4.2928libxaac, nominal 192 kbit/s, measured 192.257 kbit/s, ViSQOL 4.6221libxaac, nominal 256 kbit/s, measured 256.2606 kbit/s, ViSQOL 4.645libxaacApple, nominal 64 kbit/s, measured 67.1757 kbit/s, ViSQOL 3.4962Apple, nominal 96 kbit/s, measured 99.2713 kbit/s, ViSQOL 4.2541Apple, nominal 128 kbit/s, measured 131.2717 kbit/s, ViSQOL 4.4285Apple, nominal 192 kbit/s, measured 195.5652 kbit/s, ViSQOL 4.6689Apple, nominal 256 kbit/s, measured 259.8179 kbit/s, ViSQOL 4.7172Apple
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 25 data points
AAC-LC: ViSQOL against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sViSQOL v3 MOS-LQO
bAAC6463.9083.867
bAAC9695.9674.354
bAAC128127.9434.521
bAAC192191.9834.510
bAAC256255.7694.718
FFmpeg6467.0173.496
FFmpeg9699.2604.076
FFmpeg128131.7684.200
FFmpeg192198.9004.480
FFmpeg256262.0794.675
FDK6464.8363.771
FDK9696.7604.091
FDK128128.7324.283
FDK192192.9024.466
FDK256257.1354.486
libxaac6467.0703.813
libxaac9698.9364.116
libxaac128130.9234.293
libxaac192192.2574.622
libxaac256256.2614.645
Apple6467.1763.496
Apple9699.2714.254
Apple128131.2724.429
Apple192195.5654.669
Apple256259.8184.717
HE-AAC v1Quality · two models

Four encoders at nominal 32, 48 and 64 kbit/s. FFmpeg native AAC has no observation in this profile.

HE-AAC v1: PEAQ Basic against measured bitrate

HE-AAC v1: PEAQ Basic against measured bitratePEAQ Basic score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.-3.7128.82-3.3538.96-2.9949.09-2.6459.22-2.2869.35Measured bitrate (kbit/s)PEAQ Basic score · higher is betterbAAC, nominal 32 kbit/s, measured 32.0268 kbit/s, PEAQ Basic -3.5541bAAC, nominal 48 kbit/s, measured 48.0892 kbit/s, PEAQ Basic -2.7714bAAC, nominal 64 kbit/s, measured 64.1652 kbit/s, PEAQ Basic -2.4313bAACFDK, nominal 32 kbit/s, measured 32.8129 kbit/s, PEAQ Basic -3.5272FDK, nominal 48 kbit/s, measured 48.6613 kbit/s, PEAQ Basic -3.0627FDK, nominal 64 kbit/s, measured 64.7241 kbit/s, PEAQ Basic -2.4279FDKlibxaac, nominal 32 kbit/s, measured 33.8029 kbit/s, PEAQ Basic -3.4872libxaac, nominal 48 kbit/s, measured 49.6001 kbit/s, PEAQ Basic -3.1052libxaac, nominal 64 kbit/s, measured 65.5612 kbit/s, PEAQ Basic -2.4513libxaacApple, nominal 32 kbit/s, measured 33.8502 kbit/s, PEAQ Basic -3.56Apple, nominal 48 kbit/s, measured 49.948 kbit/s, PEAQ Basic -2.6777Apple, nominal 64 kbit/s, measured 66.0472 kbit/s, PEAQ Basic -2.4739Apple
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 12 data points
HE-AAC v1: PEAQ Basic against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sPEAQ basic ODG
bAAC3232.027-3.554
bAAC4848.089-2.771
bAAC6464.165-2.431
FDK3232.813-3.527
FDK4848.661-3.063
FDK6464.724-2.428
libxaac3233.803-3.487
libxaac4849.600-3.105
libxaac6465.561-2.451
Apple3233.850-3.560
Apple4849.948-2.678
Apple6466.047-2.474

HE-AAC v1: ViSQOL against measured bitrate

HE-AAC v1: ViSQOL against measured bitrateViSQOL score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.3.4928.823.7338.963.9849.094.2259.224.4669.35Measured bitrate (kbit/s)ViSQOL score · higher is betterbAAC, nominal 32 kbit/s, measured 32.0268 kbit/s, ViSQOL 3.645bAAC, nominal 48 kbit/s, measured 48.0892 kbit/s, ViSQOL 4.0909bAAC, nominal 64 kbit/s, measured 64.1652 kbit/s, ViSQOL 4.2917bAACFDK, nominal 32 kbit/s, measured 32.8129 kbit/s, ViSQOL 3.6801FDK, nominal 48 kbit/s, measured 48.6613 kbit/s, ViSQOL 3.9248FDK, nominal 64 kbit/s, measured 64.7241 kbit/s, ViSQOL 4.2935FDKlibxaac, nominal 32 kbit/s, measured 33.8029 kbit/s, ViSQOL 3.6386libxaac, nominal 48 kbit/s, measured 49.6001 kbit/s, ViSQOL 3.9237libxaac, nominal 64 kbit/s, measured 65.5612 kbit/s, ViSQOL 4.3082libxaacApple, nominal 32 kbit/s, measured 33.8502 kbit/s, ViSQOL 3.6489Apple, nominal 48 kbit/s, measured 49.948 kbit/s, ViSQOL 4.0587Apple, nominal 64 kbit/s, measured 66.0472 kbit/s, ViSQOL 4.3149Apple
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 12 data points
HE-AAC v1: ViSQOL against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sViSQOL v3 MOS-LQO
bAAC3232.0273.645
bAAC4848.0894.091
bAAC6464.1654.292
FDK3232.8133.680
FDK4848.6613.925
FDK6464.7244.294
libxaac3233.8033.639
libxaac4849.6003.924
libxaac6465.5614.308
Apple3233.8503.649
Apple4849.9484.059
Apple6466.0474.315
HE-AAC v2Quality · two models

Three encoders at nominal 24 and 32 kbit/s. Apple and FFmpeg have no observations in this profile.

HE-AAC v2: PEAQ Basic against measured bitrate

HE-AAC v2: PEAQ Basic against measured bitratePEAQ Basic score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.-3.7921.58-3.6624.98-3.5428.38-3.4231.78-3.335.18Measured bitrate (kbit/s)PEAQ Basic score · higher is betterbAAC, nominal 24 kbit/s, measured 23.9811 kbit/s, PEAQ Basic -3.6337bAAC, nominal 32 kbit/s, measured 32.0704 kbit/s, PEAQ Basic -3.5026bAACFDK, nominal 24 kbit/s, measured 24.4709 kbit/s, PEAQ Basic -3.6363FDK, nominal 32 kbit/s, measured 32.514 kbit/s, PEAQ Basic -3.5064FDKlibxaac, nominal 24 kbit/s, measured 25.4959 kbit/s, PEAQ Basic -3.5619libxaac, nominal 32 kbit/s, measured 33.5033 kbit/s, PEAQ Basic -3.4466libxaac
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 6 data points
HE-AAC v2: PEAQ Basic against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sPEAQ basic ODG
bAAC2423.981-3.634
bAAC3232.070-3.503
FDK2424.471-3.636
FDK3232.514-3.506
libxaac2425.496-3.562
libxaac3233.503-3.447

HE-AAC v2: ViSQOL against measured bitrate

HE-AAC v2: ViSQOL against measured bitrateViSQOL score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.3.5621.583.6824.983.8128.383.9331.784.0535.18Measured bitrate (kbit/s)ViSQOL score · higher is betterbAAC, nominal 24 kbit/s, measured 23.9811 kbit/s, ViSQOL 3.7149bAAC, nominal 32 kbit/s, measured 32.0704 kbit/s, ViSQOL 3.881bAACFDK, nominal 24 kbit/s, measured 24.4709 kbit/s, ViSQOL 3.7339FDK, nominal 32 kbit/s, measured 32.514 kbit/s, ViSQOL 3.8969FDKlibxaac, nominal 24 kbit/s, measured 25.4959 kbit/s, ViSQOL 3.7142libxaac, nominal 32 kbit/s, measured 33.5033 kbit/s, ViSQOL 3.865libxaac
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 6 data points
HE-AAC v2: ViSQOL against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sViSQOL v3 MOS-LQO
bAAC2423.9813.715
bAAC3232.0703.881
FDK2424.4713.734
FDK3232.5143.897
libxaac2425.4963.714
libxaac3233.5033.865
xHE-AACQuality · two models

bAAC and FDK at nominal 24, 32, 48, 64 and 96 kbit/s; libxaac at 64 and 96 only. Other combinations are unavailable.

Low-rate limitation: bAAC trails FDK on the recorded low-rate ViSQOL scores. The current source documents further tool and interoperability limits; these recorded results do not measure subsequent code changes.

xHE-AAC: PEAQ Basic against measured bitrate

xHE-AAC: PEAQ Basic against measured bitratePEAQ Basic score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.-3.9223.11-3.2144.64-2.4966.16-1.7887.69-1.06109.22Measured bitrate (kbit/s)PEAQ Basic score · higher is betterbAAC, nominal 24 kbit/s, measured 25.6783 kbit/s, PEAQ Basic -3.6819bAAC, nominal 32 kbit/s, measured 34.3925 kbit/s, PEAQ Basic -3.5382bAAC, nominal 48 kbit/s, measured 51.7958 kbit/s, PEAQ Basic -2.4236bAAC, nominal 64 kbit/s, measured 69.3302 kbit/s, PEAQ Basic -2.1291bAAC, nominal 96 kbit/s, measured 104.0155 kbit/s, PEAQ Basic -1.3021bAACFDK, nominal 24 kbit/s, measured 27.6673 kbit/s, PEAQ Basic -3.4043FDK, nominal 32 kbit/s, measured 36.3319 kbit/s, PEAQ Basic -3.2714FDK, nominal 48 kbit/s, measured 54.0955 kbit/s, PEAQ Basic -3.0002FDK, nominal 64 kbit/s, measured 71.6278 kbit/s, PEAQ Basic -1.7881FDK, nominal 96 kbit/s, measured 96.3666 kbit/s, PEAQ Basic -1.5314FDKlibxaac, nominal 64 kbit/s, measured 64.3039 kbit/s, PEAQ Basic -2.7697libxaac, nominal 96 kbit/s, measured 96.3866 kbit/s, PEAQ Basic -1.4317libxaac
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 12 data points
xHE-AAC: PEAQ Basic against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sPEAQ basic ODG
bAAC2425.678-3.682
bAAC3234.393-3.538
bAAC4851.796-2.424
bAAC6469.330-2.129
bAAC96104.016-1.302
FDK2427.667-3.404
FDK3236.332-3.271
FDK4854.096-3.000
FDK6471.628-1.788
FDK9696.367-1.531
libxaac6464.304-2.770
libxaac9696.387-1.432

xHE-AAC: ViSQOL against measured bitrate

xHE-AAC: ViSQOL against measured bitrateViSQOL score, higher is better. Mean measured file rate in kbit/s, including framing. Ten music excerpts. Each point is available in the adjacent data table.3.2423.113.5644.643.8966.164.2187.694.53109.22Measured bitrate (kbit/s)ViSQOL score · higher is betterbAAC, nominal 24 kbit/s, measured 25.6783 kbit/s, ViSQOL 3.3931bAAC, nominal 32 kbit/s, measured 34.3925 kbit/s, ViSQOL 3.6837bAAC, nominal 48 kbit/s, measured 51.7958 kbit/s, ViSQOL 4.1184bAAC, nominal 64 kbit/s, measured 69.3302 kbit/s, ViSQOL 4.2721bAAC, nominal 96 kbit/s, measured 104.0155 kbit/s, ViSQOL 4.3296bAACFDK, nominal 24 kbit/s, measured 27.6673 kbit/s, ViSQOL 4.0218FDK, nominal 32 kbit/s, measured 36.3319 kbit/s, ViSQOL 4.0619FDK, nominal 48 kbit/s, measured 54.0955 kbit/s, ViSQOL 3.9975FDK, nominal 64 kbit/s, measured 71.6278 kbit/s, ViSQOL 4.3337FDK, nominal 96 kbit/s, measured 96.3666 kbit/s, ViSQOL 4.1709FDKlibxaac, nominal 64 kbit/s, measured 64.3039 kbit/s, ViSQOL 4.3073libxaac, nominal 96 kbit/s, measured 96.3866 kbit/s, ViSQOL 4.3775libxaac
Higher model score is better. Actual rate: kbit/s, mean of ten file rates. Lines connect observations as a visual guide, without equal-rate interpolation. Recorded 30–31 October 2026; TCDAudio14 music.
Inspect 12 data points
xHE-AAC: ViSQOL against measured bitrate · ten excerpts per configuration
EncoderNominal kbit/sActual kbit/sViSQOL v3 MOS-LQO
bAAC2425.6783.393
bAAC3234.3933.684
bAAC4851.7964.118
bAAC6469.3304.272
bAAC96104.0164.330
FDK2427.6674.022
FDK3236.3324.062
FDK4854.0963.998
FDK6471.6284.334
FDK9696.3674.171
libxaac6464.3044.307
libxaac9696.3874.378

55 configurations selected from the quality summary CSV, checked against per-excerpt rows. VBR and experimental settings are outside these plots. Worst-item scores are not uncertainty bounds; no absolute-score confidence intervals are plotted.

Recorded throughput

Audio seconds per CPU second.

Higher is faster. Each bar divides input audio duration by CPU time (user plus system). Compare codecs within a profile and operation: encoding and decoding are separate workloads. Every bar starts at zero.

AAC-LCEncode and decode

TCDAudio14 music, 48 kHz, 16-bit stereo; 130.3173125 seconds of audio. Missing codec/profile combinations are unavailable, not zero. Decode input is a common FDK stream, or libxaac where FDK is unavailable.

AAC-LC: Encode throughput

AAC-LC: Encode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.039.8279.64119.46159.28bAACbAAC: 36.098978531856 audio seconds / CPU second36.1FFmpegFFmpeg: 35.22089527027 audio seconds / CPU second35.22FDKFDK: 83.004657643312 audio seconds / CPU second83libxaaclibxaac: 144.79701388889 audio seconds / CPU second144.8AppleApple: 78.504405120482 audio seconds / CPU second78.5Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 128 kbit/s workload. Recorded 31 October 2026.
Inspect 5 observations
AAC-LC: Encode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731253.61036.099
FFmpeg130.31731253.70035.221
FDK130.31731251.57083.005
libxaac130.31731250.900144.797
Apple130.31731251.66078.504

AAC-LC: Decode throughput

AAC-LC: Decode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.0170.65341.31511.96682.61bAACbAAC: 620.55863095238 audio seconds / CPU second620.56FFmpegFFmpeg: 228.62686403509 audio seconds / CPU second228.63FDKFDK: 325.79328125 audio seconds / CPU second325.79libxaaclibxaac: 334.14695512821 audio seconds / CPU second334.15AppleApple: 420.37842741935 audio seconds / CPU second420.38Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 128 kbit/s workload. Recorded 31 October 2026.
Inspect 5 observations
AAC-LC: Decode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731250.210620.559
FFmpeg130.31731250.570228.627
FDK130.31731250.400325.793
libxaac130.31731250.390334.147
Apple130.31731250.310420.378
HE-AAC v1Encode and decode

TCDAudio14 music, 48 kHz, 16-bit stereo; 130.3173125 seconds of audio. Missing codec/profile combinations are unavailable, not zero. Decode input is a common FDK stream, or libxaac where FDK is unavailable.

HE-AAC v1: Encode throughput

HE-AAC v1: Encode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.040.7281.45122.17162.9bAACbAAC: 50.905200195313 audio seconds / CPU second50.91FDKFDK: 77.569828869048 audio seconds / CPU second77.57libxaaclibxaac: 148.08785511364 audio seconds / CPU second148.09AppleApple: 86.878208333333 audio seconds / CPU second86.88Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 48 kbit/s workload. Recorded 31 October 2026.
Inspect 4 observations
HE-AAC v1: Encode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731252.56050.905
FDK130.31731251.68077.570
libxaac130.31731250.880148.088
Apple130.31731251.50086.878

HE-AAC v1: Decode throughput

HE-AAC v1: Decode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.089.59179.19268.78358.37bAACbAAC: 310.27931547619 audio seconds / CPU second310.28FFmpegFFmpeg: 310.27931547619 audio seconds / CPU second310.28FDKFDK: 232.70948660714 audio seconds / CPU second232.71libxaaclibxaac: 120.66417824074 audio seconds / CPU second120.66AppleApple: 325.79328125 audio seconds / CPU second325.79Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 48 kbit/s workload. Recorded 31 October 2026.
Inspect 5 observations
HE-AAC v1: Decode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731250.420310.279
FFmpeg130.31731250.420310.279
FDK130.31731250.560232.709
libxaac130.31731251.080120.664
Apple130.31731250.400325.793
HE-AAC v2Encode and decode

TCDAudio14 music, 48 kHz, 16-bit stereo; 130.3173125 seconds of audio. Missing codec/profile combinations are unavailable, not zero. Decode input is a common FDK stream, or libxaac where FDK is unavailable.

HE-AAC v2: Encode throughput

HE-AAC v2: Encode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.062.87125.74188.62251.49bAACbAAC: 91.130987762238 audio seconds / CPU second91.13FDKFDK: 122.94086084906 audio seconds / CPU second122.94libxaaclibxaac: 228.62686403509 audio seconds / CPU second228.63Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 32 kbit/s workload. Recorded 31 October 2026.
Inspect 3 observations
HE-AAC v2: Encode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731251.43091.131
FDK130.31731251.060122.941
libxaac130.31731250.570228.627

HE-AAC v2: Decode throughput

HE-AAC v2: Decode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.099.55199.1298.64398.19bAACbAAC: 361.99253472222 audio seconds / CPU second361.99FFmpegFFmpeg: 271.49440104167 audio seconds / CPU second271.49FDKFDK: 188.86567028986 audio seconds / CPU second188.87libxaaclibxaac: 149.79001436782 audio seconds / CPU second149.79AppleApple: 342.94029605263 audio seconds / CPU second342.94Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 32 kbit/s workload. Recorded 31 October 2026.
Inspect 5 observations
HE-AAC v2: Decode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731250.360361.993
FFmpeg130.31731250.480271.494
FDK130.31731250.690188.866
libxaac130.31731250.870149.790
Apple130.31731250.380342.940
xHE-AACEncode and decode

TCDAudio14 music, 48 kHz, 16-bit stereo; 130.3173125 seconds of audio. Missing codec/profile combinations are unavailable, not zero. Decode input is a common FDK stream, or libxaac where FDK is unavailable.

xHE-AAC: Encode throughput

xHE-AAC: Encode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.016.2232.4348.6564.86bAACbAAC: 24.449777204503 audio seconds / CPU second24.45FDKFDK: 28.641167582418 audio seconds / CPU second28.64libxaaclibxaac: 58.967109728507 audio seconds / CPU second58.97Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 64 kbit/s workload. Recorded 31 October 2026.
Inspect 3 observations
xHE-AAC: Encode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731255.33024.450
FDK130.31731254.55028.641
libxaac130.31731252.21058.967

xHE-AAC: Decode throughput

xHE-AAC: Decode throughputAudio seconds divided by CPU seconds, higher is better. Bars start at zero. Recorded single-threaded 130.3173125-second music workload. Each observation is available in the adjacent data table.046.5493.08139.63186.17bAACbAAC: 169.24326298701 audio seconds / CPU second169.24FDKFDK: 129.02704207921 audio seconds / CPU second129.03libxaaclibxaac: 126.52166262136 audio seconds / CPU second126.52Audio seconds / CPU second · higher is better
Audio seconds / CPU second; higher is faster. Nominal 64 kbit/s workload. Recorded 31 October 2026.
Inspect 3 observations
xHE-AAC: Decode throughput · dedicated speed run
CodecAudio secondsCPU secondsAudio seconds / CPU second
bAAC130.31731250.770169.243
FDK130.31731251.010129.027
libxaac130.31731251.030126.522

33 observations from speed.json. Four encoder experiments and the zero-audio-duration Wine baseline are excluded; no baseline time is subtracted.

Separate reference context

What lossless needs on this corpus.

ALAC and FLAC preserve the decoded samples exactly in these recorded checks. Their measured rates provide storage context for the same music corpus. They have no AAC quality score here, and this table does not imply a bAAC lossless mode.

Recorded lossless references · TCDAudio14 music, 48 kHz, 16-bit stereo
ReferenceMeasured kbit/sBit-exact check
FFmpeg ALAC697.016Passed
FLAC level 5629.677Passed
FLAC level 8615.062Passed
refalac ALAC690.250Passed

Four reference configurations from lossless.json: FFmpeg ALAC, refalac 2.85 and FLAC 1.4.3 at levels 5 and 8.

Method and provenance

Read the conditions behind the curves.

The site renders recorded repository data. Source links identify the latest commit affecting the bAAC package in this checkout; the measurement revisions below identify the code that produced the results.

Measurement dates, revisions and timing

Quality was first measured on 30 October 2026 at 166dec8e5e32598cb0b9911755bfd4a417b9822b. bAAC was remeasured on 31 October at 129ce927775beee5548aa9418829fa0fe2639b1f; other encoders retain the first run's streams and scores. The tracked result revision is 9d05f8b1dcd6b04f61f046a9a42a453ef593a813.

The speed table is the second run of 31 October. bAAC used a Release build with GCC 13.3. The harness defaults to three timing repeats, selecting minimum CPU and wall time separately and maximum RSS. The actual repeat count is not stored in the raw results. Throughput here uses only the recorded CPU time. The raw files do not carry complete provenance metadata; these conditions come from the comparison document.

Reference versions
  • FFmpeg 6.1.1: native AAC two-loop encoder and decoder.
  • FDK: AOSP C++ tree c41c3c7516ea8d0d78a53b96b30bed3a29745cc6, rather than FFmpeg's linked libfdk-aac 2.0.3.
  • Ittiam libxaac v0.1.14, revision 2fbadd57bca46693b7a077bcf1513131106d960c.
  • Apple CoreAudioToolbox 7.10.9.0 from iTunes for Windows 12.13.9.1, through qaac 2.85 and Wine 9.0, quality setting 2.

These are measured references, not endorsements or runtime dependencies of bAAC.

Corpus, meters and alignment

The corpus contains ten TCDAudio14 music excerpts, each about seven to sixteen seconds, totalling 130.3173125 seconds. Setup pins the ViSQOL corpus repository to 38d0b0163e441047d4429bf07ad09e5b9031d02c and verifies file SHA-256 sums. That corpus pin does not identify the ViSQOL executable.

GstPEAQ is pinned to 7397e49f5ede2f2429fb78f6663784e548401fec. ViSQOL v3 uses audio mode and the default libsvm model; its exact executable revision was not recorded. PEAQ compresses severe impairments below about −3, and GstPEAQ reports conformance limitations. Scores are shown as observed, without clamping to a nominal scale.

The pipeline uses FFmpeg to decode LC/HE streams and libxaac for xHE, with normalization and limiter off. It aligns decoded audio by cross-correlation, then matches levels below 3 kHz. Low-rate corrections reach about 3.2 dB on individual excerpts. Actual rates are arithmetic means of file rates, not duration-weighted corpus rates.

The linked report's intervals are Student-t 95% half-widths of paired reference-minus-bAAC differences over ten items, using multiplier 2.262. They are not bootstrap intervals or confidence intervals for individual mean scores. Its equal-bitrate tables interpolate item curves; this page does not recompute or extrapolate them.

Interoperability and code provenance

The recorded compatibility dataset has 790 attempts: 780 succeed and ten fail. The failures are bAAC decoding libxaac raw xHE64 inputs that require an unsupported config/size-list input path. All 440 attempts involving bAAC-encoded streams succeed in this dataset. This coverage does not establish universal decoder compatibility.

Baander-authored code is Apache-2.0. The package's provenance disclosure identifies standards tables, consulted implementations and attributed data. Read it together with the capability limitations.