Senior Full-Stack Engineer / Technical Lead Specialist in Applied Mathematics and Computer Science, Mathematician, Systems Programmer Wildberries LLC, Russia, Moscow
MEMORY-SAFETY WEAKNESSES IN LIGHTWEIGHT MP3 DECODERS: BOUNDS-SAFE REMEDIATION AND A COMPARATIVE EXPERIMENT ON MALFORMED VBR METADATA
ABSTRACT
This article examines memory-safety weaknesses in lightweight MP3 decoders through malformed Xing/Info VBR metadata parsing. The study focuses on a first-frame parsing path in which metadata flags control subsequent reads and offset transitions without sufficient validation of the remaining frame length. A concrete out-of-bounds read case is analyzed to show why a narrow local fix is insufficient when the full metadata-directed path remains under-validated. A bounds-safe remediation strategy is proposed based on explicit offset accounting and residual-length checks before every read and skip operation. The paper also reports a comparative experiment on minimp3, dr_mp3, and libmad using a shared corpus of valid and malformed MP3 files together with AddressSanitizer and UndefinedBehaviorSanitizer. The results show that two lightweight decoders reproduce the same heap out-of-bounds read on forged all-flags Xing/Info metadata, whereas the control decoder safely rejects the same malformed inputs in the evaluated path.
АННОТАЦИЯ
В статье исследуются уязвимости безопасности памяти в облегченных MP3-декодерах на примере разбора некорректных Xing/Info VBR-метаданных. Рассматривается случай чтения за пределами буфера, возникающий при разборе метаданных первого кадра, когда флаги управляют последующими чтениями и смещениями без достаточной проверки остаточной длины кадра. Показано, что локальная точечная правка не устраняет весь класс ошибок, если путь разбора в целом остается недопроверенным. Предложен подход к безопасной правке, основанный на явном учете смещений и проверке остаточной длины перед каждой операцией чтения и пропуска данных. Проведен сравнительный эксперимент для minimp3, dr_mp3 и libmad с использованием общего корпуса корректных и некорректных MP3-файлов, а также ASan/UBSan. Полученные результаты показывают, что два облегченных декодера воспроизводят однотипное чтение за пределами буфера на поддельных Xing/Info-метаданных, тогда как контрольный декодер безопасно отклоняет те же входные данные в исследованном пути.
Keywords: memory safety, MP3 decoder, out-of-bounds read, VBR metadata, bounds checking, parser hardening, sanitizer-assisted testing.
Ключевые слова: безопасность памяти, MP3-декодер, чтение за пределами буфера, VBR-метаданные, проверка границ, усиление надежности парсера, тестирование с sanitizer’ами.
1. Introduction
Compact multimedia libraries remain widely used in modern software systems because of their portability, small footprint, and ease of integration. This is especially true for lightweight MP3 decoders, which are often embedded into desktop applications, scripting language bindings, multimedia frameworks, and software intended for resource-constrained environments. In practice, such libraries are frequently implemented in C or C++ and rely on direct memory access, manual pointer arithmetic, and compact parsing logic in order to minimize overhead.
These same properties also make such code sensitive to malformed or truncated binary input. When parser control flow depends on optional metadata flags or embedded lengths, memory-safety failures may occur if the parser reads fields or performs offset transitions before proving that the corresponding bytes are actually present. In such cases, a short input can satisfy early structural checks while later operations cross the valid object boundary and trigger out-of-bounds reads, undefined behavior, or denial-of-service conditions [1–4].
Previous work has examined the reliability of systems software, fuzzing-assisted vulnerability discovery, sanitizer-based bug detection, and practical methods for secure engineering in low-level languages [1–6]. At the same time, lightweight multimedia decoders remain less represented in academic discussion than browser engines, network stacks, or image codecs, despite the fact that they routinely process attacker-controlled media in native code and often without privilege separation. This makes compact audio parsers a practically important yet under-discussed class of software from the standpoint of robustness and secure parsing.
The purpose of this work is to analyze a concrete memory-safety weakness in lightweight MP3 decoding and to assess whether it reflects a broader parser-robustness pattern. The study combines a remediation-centered case study of malformed Xing/Info VBR metadata parsing with a comparative sanitizer-assisted experiment on minimp3, dr_mp3, and libmad. The main contribution is twofold: first, the paper formulates delayed bounds validation in metadata-directed traversal as a reusable parser weakness pattern; second, it proposes a bounds-safe remediation strategy based on explicit offset accounting and residual-length checks. The practical significance of the work lies in showing how compact multimedia parsers can be hardened without large-scale architectural changes.
2. Materials and Methods
2.1 Parser risk model in metadata-directed traversal
Lightweight multimedia parsers are often optimized for small size, straightforward integration, and low runtime overhead. In binary formats, this frequently leads to implementations in which optional sections are traversed with offset arithmetic and pointer updates rather than through strongly bounded parsing abstractions. On well-formed input, this design is efficient. On malformed input, it can become fragile.
A recurring weakness pattern arises when parser control flow depends on metadata flags or embedded lengths that are interpreted before the parser proves that the corresponding bytes are available. Typical manifestations include reading fields before sufficient residual length is established, validating structure size only after several transitions have already occurred, trusting metadata flags as though they guaranteed actual storage layout, and allowing internal offsets to advance beyond the logical boundary of the current object. Similar engineering risks have long been observed in systems software and parser implementations that operate on untrusted binary input [1], [4], [6], [10].
This issue is especially relevant when optional fields are controlled by metadata flags. A parser may recognize a candidate signature, inspect a flags field, and then conditionally traverse multiple optional sections. If each read and each skip is not guarded independently, a crafted short object may satisfy early checks and still cause later operations to occur outside the valid buffer. For this reason, metadata processing should be treated as a first-class robustness boundary rather than as an auxiliary feature of the decoder.
2.2 VBR metadata parsing as a risk boundary
In MP3 decoding, Xing or Info metadata may describe frame counts, byte counts, table-of-contents entries, and optional encoder-related extension values such as encoder delay and padding [8], [9]. The parser usually locates this metadata relative to the current frame header and side-information region. A compact implementation typically identifies the tag signature, reads a flags field, and then conditionally traverses several optional sections depending on the set bits.
This design is efficient on well-formed input but becomes fragile on truncated or forged frames. If metadata declares optional fields that do not actually fit into the available frame, a delayed check near the end of the parsing path is insufficient, because earlier reads and metadata-controlled skips may already have crossed the valid frame boundary. Therefore, in metadata-directed parsing, bounds checks should be placed not after the whole sequence of operations, but before each individual read and before each metadata-controlled skip or offset transition.
2.3 Case study: bounds-safe remediation of Xing/Info parsing
The practical core of this article is a case study involving malformed Xing/Info VBR metadata in a compact MP3 decoder. The vulnerable path was associated with VBR tag parsing logic in which a candidate metadata pointer was computed relative to the current frame. The parser then performed the following sequence: it compared the first bytes of the candidate region with expected tag signatures, read the flags field, extracted the frame count, conditionally skipped optional metadata blocks such as byte count, TOC, and VBR scale, and finally read an extension marker before attempting to parse delay and padding values.
The problem was that this path did not consistently validate the remaining frame length before each operation. For short low-bitrate frames with forged flags, the parser could reach a state in which the cumulative offset exceeded the actual frame boundary. As a result, a later byte access occurred outside the valid memory region, triggering a heap out-of-bounds read under AddressSanitizer. According to the Common Weakness Enumeration, this behavior corresponds to an out-of-bounds read weakness (CWE-125) [7].
The root cause was therefore not a single unsafe dereference, but a broader violation of parser-local safety invariants. The parser trusted the metadata-directed layout before proving that the frame actually contained all required bytes. This made the code vulnerable to malformed or truncated inputs whose early bytes looked plausible enough to enter the metadata parsing branch.
A narrow local fix before the final failing read would not be sufficient. Earlier operations on the same path, including tag matching, flags extraction, fixed-width field reads, and optional-field traversal, also depended on the unverified assumption that the structure was long enough. Thus, a correct remediation had to cover the full parse path rather than only one visible crash site.
To eliminate the weakness class rather than only the observed symptom, the parsing logic was redesigned around explicit offset accounting. Instead of allowing a raw pointer to drift through the tag structure, the hardened implementation keeps track of the current offset within the frame and validates the required remaining length before each operation.
The remediation can be stated through the following local parser invariant:
At each parser step, before any read of width N and before any metadata-directed skip of width K, the parser must prove that offset + required_bytes <= frame_size.
This invariant is important because it converts implicit parser assumptions into explicit local preconditions. As a result, safety is enforced step by step rather than deferred until the final dereference site. In engineering terms, the remediation changes the parser from a pointer-drifting implementation into an offset-bounded implementation.
The practical implementation of the remediation includes an early minimal-size guard before any metadata processing, explicit computation of the tag offset inside the frame, residual-length checks before signature comparison, a separate guard before reading the flags byte, explicit checks before reading the frame count field, independent length validation before skipping each optional section, a one-byte guard before testing for an extension marker, and a full-size guard before reading delay and padding extension fields.
This strategy preserves behavior on valid inputs while safely rejecting malformed or truncated tags. It also improves code auditability, because each operation is associated with a visible local precondition. The main engineering contribution of the remediation is that it replaces a symptom-level guard with a path-level safety invariant. In other words, the corrected implementation does not merely prevent one failing dereference, but restructures the metadata parsing path so that malformed and truncated tag layouts are rejected before unsafe traversal becomes possible.
The contrast between the vulnerable and hardened parsing logic is shown in Figure 1.
/Chmelev.files/image001.png)
Figure 1. Vulnerable metadata-directed traversal versus bounds-safe offset-based parsing of Xing/Info VBR metadata
2.4 Comparative experiment design
The comparative experiment was designed to determine whether the minimp3 case represents an isolated implementation defect or a more general robustness weakness in lightweight metadata-directed parsing. To answer this question, a shared corpus of valid and malformed MP3 files was executed against three compact decoders under Address Sanitizer and Undefined Behavior Sanitizer using decoder-specific harnesses and comparable execution conditions.
Three decoders were selected: minimp3 (commit afb604c06bc8) [11], dr_mp3 from dr_libs (commit fa931f3285ce) [12], and libmad (version 0.15.1b) [13]. The choice was motivated by implementation style and parser relevance. minimp3 and dr_mp3 are compact embeddable decoders with explicit Xing/Info traversal paths, which makes them suitable lightweight peers for comparison. libmad was included as a contrast case because, in the tested path, it did not expose the same direct Xing/Info traversal pattern and could therefore serve as a control decoder for safe rejection behavior in the evaluated malformed-metadata scenarios.
The experiment is documented in the author’s reproducible research repository, which contains the shared corpus, the decoder-specific harnesses, sanitizer-based runners, and summarized results used in the present study [14]. This makes it possible to re-run the experiment and verify both the observed failures and the comparative classifications reported in this paper.
Table 1 summarizes the decoder selection rationale.
Table 1.
Decoder selection rationale
|
Decoder |
Revision / version |
Implementation style |
Metadata path relevance |
Reason included |
|
minimp3 |
afb604c06bc8 |
single-header, embeddable C decoder |
Explicit Xing/Info traversal in mp3dec_check_vbrtag() |
Primary case-study target |
|
dr_mp3 |
fa931f3285ce |
single-header, embeddable C decoder |
Explicit Xing/Info traversal during initialization in drmp3_init_internal() |
Lightweight comparative peer with similar deployment profile |
|
libmad |
0.15.1b |
compact fixed-point C decoder |
In the tested path it did not expose the same direct Xing/Info traversal pattern |
Contrast case for safe rejection behavior in the evaluated path |
2.5 Corpus, harnesses, and sanitizer configuration
The experiment used a shared corpus of ten inputs: four valid baselines and six malformed files. The valid inputs represented ordinary CBR, VBR, and low-bitrate cases. The malformed inputs included truncated files, low-bitrate first-frame truncations, and targeted forged Xing/Info vectors. Two of these malformed vectors were derived from the trigger condition of the central minimp3 VBR-tag issue: low-bitrate MPEG-1 Layer III stereo first frames with frame_size = 104 bytes and a Xing/Info offset of 36 bytes. In the forged variants, the flags byte was set to 0x0F, forcing traversal over FRAMES, BYTES, TOC, and VBR_SCALE fields before the extension-marker read.
One minimal C harness was written per decoder. Each harness loaded an MP3 input from memory and attempted either a full decode or an initialization-driven metadata parse. The decoders were compiled with -fsanitize=address and -fsanitize=undefined in separate runs. libmad was built with --enable-fpm=64bit --disable-aso in order to avoid obsolete assembly paths while preserving the parser behavior relevant to the study.
The observed Address Sanitizer findings aligned with metadata-controlled traversal logic in the following code paths: minimp3 in minimp3_ex.h, especially the unchecked extension-marker read in mp3dec_check_vbrtag(), and dr_mp3 in dr_mp3.h, especially the analogous unchecked read in drmp3_init_internal(). These two paths share the same structural pattern: signature recognition, flag extraction, metadata-directed skipping, and only then a late length check.
For methodological clarity, the term silent malformed parse denotes a case in which the input is malformed, the decoder does not cleanly reject it, no sanitizer finding is produced, and the return path indicates success or non-failure while the output is zero-length or otherwise unusable. This category is important because robustness issues in compact decoders are not limited to visible crashes.
/Chmelev.files/image002.png)
Figure 2. Comparative experiment workflow: shared corpus, decoder-specific harnesses, sanitizer-assisted execution, and outcome classification
The overall workflow of the comparative experiment is shown in Figure 2.
3. Results and Discussion
3.1. AddressSanitizer outcomes
Table 2 presents the aggregated malformed-input outcomes under AddressSanitizer and therefore serves as the main comparative robustness summary of the study.
Table 2.
Aggregated malformed-input outcomes under ASan
|
Decoder |
Malformed success |
Silent malformed parse |
Safe reject |
Sanitizer finding |
Dominant ASan observation |
|
minimp3 |
1 |
3 |
0 |
2 |
Forged all-flags Xing/Info vectors trigger reproducible heap out-of-bounds reads |
|
dr_mp3 |
1 |
0 |
3 |
2 |
Same forged all-flags vectors trigger reproducible heap out-of-bounds reads |
|
libmad |
1 |
0 |
5 |
0 |
Targeted malformed metadata vectors are rejected without ASan findings in the evaluated path |
The aggregated view shows that the strongest failures are concentrated in the targeted forged Xing/Info cases. At the same time, the malformed-input behavior of the decoders is not identical. minimp3 is weaker not only because of sanitizer-visible faults, but also because it often reports non-failure on malformed inputs while producing unusable output, which is better classified as a silent malformed parse than as a clean rejection.
3.2. Targeted forged-metadata cases
Since the forged all-flags Xing and Info regressions are the strongest evidence in the study, they are presented separately in Table 3.
Table 3.
Targeted forged-metadata cases under ASan
|
Input |
minimp3 |
dr_mp3 |
libmad |
|
minimp3_issue134_xing_all_flags.mp3 |
ASan heap-buffer-overflow |
ASan heap-buffer-overflow |
safe reject |
|
minimp3_issue134_info_all_flags.mp3 |
ASan heap-buffer-overflow |
ASan heap-buffer-overflow |
safe reject |
|
forged_xing_toc_only_120.mp3 |
silent malformed parse (return 0, zero samples) |
safe reject |
safe reject |
These two forged all-flags regressions are the strongest comparative evidence in the paper because they reproduce the same failure class across two lightweight decoders under identical malformed-metadata conditions.
/Chmelev.files/image003.png)
Figure 3. Outcomes for targeted forged Xing/Info metadata cases under AddressSanitizer across minimp3, dr_mp3, and libmad
As highlighted in Figure 3, the central comparative result of the study is that the forged all-flags Xing and Info regressions trigger the same heap out-of-bounds read pattern in both minimp3 and dr_mp3, whereas libmad safely rejects the same malformed inputs in the evaluated path.
3.3. UBSan observations
UndefinedBehaviorSanitizer produced a different picture and is therefore discussed separately.
Table 4.
UBSan observations
|
Decoder |
UBSan outcome |
Interpretation |
|
minimp3 |
No UBSan finding on the forged Xing/Info regressions; malformed files often return success with zero decoded output |
UBSan alone does not expose the metadata out-of-bounds condition; ASan is required for this class |
|
dr_mp3 |
No UBSan finding on the forged Xing/Info regressions; malformed metadata inputs are mostly rejected |
UBSan does not expose the targeted metadata issue, but the parser behaves more conservatively than minimp3 on non-crashing malformed cases |
|
libmad |
UBSan reports an unrelated out-of-bounds index in synthesis code on decodable inputs, including valid files |
This is a separate robustness concern and should not be interpreted as evidence of the same Xing/Info traversal weakness |
The UBSan results are important for interpretation. They show that the targeted metadata weakness is not a generic “undefined behavior” finding that can be surfaced equally well by any sanitizer. Rather, it is specifically a spatial memory-safety issue for which AddressSanitizer is the relevant diagnostic tool in the evaluated path.
3.4. Interpretation of the comparative results
The comparative result does not suggest that all lightweight MP3 decoders fail in the same way. Instead, it provides focused evidence that metadata-directed first-frame traversal is a meaningful robustness boundary in compact decoders. In the evaluated malformed Xing/Info scenarios, the forged all-flags regressions trigger the same AddressSanitizer-visible heap out-of-bounds read in both minimp3 and dr_mp3, whereas libmad safely rejects the same inputs in the tested path. This indicates that the weakness is implementation- and path-dependent rather than inherent to MP3 decoding as such. In addition, minimp3 shows weaker malformed-input discipline on several non-crashing cases by reporting success while producing zero decoded output.
Taken together, the case study and the comparative experiment support a broader engineering conclusion. The analyzed out-of-bounds read is best understood not as a one-line bug, but as a structural parser weakness that emerges when metadata-directed traversal is permitted to advance under delayed bounds validation. In the vulnerable implementation, several operations relied on frame-size assumptions that had not been established locally. This confirms that metadata-driven parse paths in compact decoders should be treated as high-risk robustness boundaries rather than as secondary utility code.
The proposed remediation based on explicit offsets and residual-length checks has practical advantages. It improves memory safety by ensuring that all reads and all metadata-directed skips are preceded by explicit validation. It is intended to preserve compatibility with valid MP3 streams, because it changes behavior only for malformed or truncated metadata. It also improves maintainability and code review, since the parser’s assumptions become visible in the implementation rather than remaining implicit.
The comparative experiment further strengthens the contribution beyond a single bug report. The results show that the original minimp3 issue is not merely a one-off local crash site. A second lightweight embeddable decoder, dr_mp3, exhibited the same AddressSanitizer-visible heap out-of-bounds read on the forged all-flags Xing and Info regressions. At the same time, libmad served as a useful contrast case by rejecting the same tested inputs in the evaluated malformed-metadata path. This does not imply that all compact decoders share the same weakness, but it does support the hypothesis that delayed bounds validation in metadata-directed traversal can recur across lightweight embeddable implementations.
Another important result is that robustness problems in compact decoders are not limited to crashing behavior. In several malformed but non-crashing cases, minimp3 reported success while producing zero decoded output. Such behavior is less severe than an out-of-bounds read, but it still indicates weak malformed-input discipline and complicates reliable downstream use.
3.5. Remediation scope and engineering implications
The comparative experiment in this paper was intended primarily as a pre-fix characterization of the weakness pattern in upstream decoder paths. The remediation contribution of the study lies in the design of a bounds-safe parsing strategy for the minimp3 Xing/Info path together with targeted regression artifacts for malformed inputs. Accordingly, the present work argues for a class-level engineering remedy rather than for a fully benchmarked patched implementation.
A complete patched-versus-unpatched validation matrix across the shared corpus, as well as a measurement of performance overhead, remains future work and is outside the scope of the current paper. This limitation is important because it prevents overstating the remediation claim: the article argues that the bounds-safe redesign is the correct class-level engineering response to the observed weakness, but it does not claim to provide a complete post-fix benchmarking study.
From a software-engineering perspective, the work also illustrates the value of combining three methodological elements: case-study analysis of a real implementation defect, sanitizer-assisted experimentation, and remediation framed as a reusable safe-parsing pattern rather than as an isolated fix. This combination increases the scientific value of the work beyond a simple bug report and makes the conclusions more relevant to developers of compact multimedia software.
4. Threats to Validity and Limitations
The study has several limitations that should be taken into account when interpreting the results.
First, the comparative corpus is intentionally small. It contains ten inputs, of which six are malformed. This is sufficient for a focused case-study experiment, but it does not support prevalence claims about the ecosystem of MP3 decoders as a whole.
Second, the malformed inputs are targeted. The experiment concentrates on first-frame Xing/Info scenarios, especially low-bitrate forged and truncated cases derived from the trigger condition of the minimp3 VBR-tag issue. Therefore, the conclusions should be read as applying to this metadata-directed parser boundary rather than to all possible malformed MP3 inputs.
Third, only three decoders were evaluated. Two of them, minimp3 and dr_mp3, are compact embeddable decoders with relatively similar deployment profiles. This makes the comparison meaningful, but it also limits implementation diversity.
Fourth, the evaluation is sanitizer-driven rather than formally verified. AddressSanitizer and UndefinedBehaviorSanitizer are highly practical tools for discovering memory-safety and robustness issues, but they do not constitute formal correctness proofs [3].
Fifth, libmad is used only as a contrast case for the tested malformed Xing/Info scenarios and the evaluated path. The results do not justify any general claim that libmad is globally safe or universally more robust than the other decoders. Moreover, its unrelated UBSan observation in synthesis code demonstrates that absence of the targeted metadata weakness does not imply absence of other robustness concerns.
Sixth, the remediation discussion is stronger at the code-design level than at the post-fix empirical level. The current article does not report a full patched-versus-unpatched validation matrix across the shared corpus and does not quantify performance overhead of the hardened parser path.
Accordingly, the study should be interpreted as a focused case study with comparative evidence, not as a prevalence estimate for the broader MP3 decoder ecosystem.
5. Conclusion
This article examined memory-safety weaknesses in lightweight MP3 decoders through malformed Xing/Info VBR metadata parsing. The analysis showed that metadata-controlled parser paths become unsafe when reads and offset transitions are performed under delayed bounds validation. In the studied case, forged or truncated metadata led to a heap out-of-bounds read because the parser advanced through optional fields without proving that the required bytes remained inside the current frame.
To address this problem, the paper proposed a bounds-safe remediation strategy based on explicit offset accounting and residual-length checks before every read and skip operation. This approach is intended to eliminate the local class of truncated-tag traversal faults while preserving behavior on valid inputs and improving parser auditability.
The comparative experiment further showed that the observed weakness is not confined to a single implementation. In the evaluated malformed Xing/Info scenarios, both minimp3 and dr_mp3 reproduced the same AddressSanitizer-visible heap out-of-bounds read, whereas libmad safely rejected the same inputs in the tested path. These results suggest that delayed bounds validation in metadata-directed traversal is a recurring robustness concern in compact embeddable decoders and should be treated as a first-class hardening target in lightweight multimedia parsing.
The reported results indicate that compact multimedia libraries can remain efficient and portable while still benefiting from systematic hardening of parser logic. Therefore, the proposed approach is relevant not only for one specific codebase, but also for the broader engineering practice of building robust binary parsers in resource-sensitive software environments.
References:
- Miller B.P., Fredriksen L., So B. An empirical study of the reliability of UNIX utilities // Communications of the ACM. – 1990. – Vol. 33. – No. 12. – P. 32–44.
- Sutton M., Greene A., Amini P. Fuzzing: Brute Force Vulnerability Discovery. – Boston: Addison-Wesley, 2007.
- Serebryany K., Bruening D., Potapenko A., Vyukov D. AddressSanitizer: A fast address sanity checker // Proceedings of the 2012 USENIX Annual Technical Conference. – 2012. – P. 309–318.
- Böhme M., Pham V.-T., Roychoudhury A. Coverage-based greybox fuzzing as Markov chain // IEEE Transactions on Software Engineering. – 2019. – Vol. 45. – No. 5. – P. 489–506.
- Runeson P., Höst M. Guidelines for conducting and reporting case study research in software engineering // Empirical Software Engineering. – 2009. – Vol. 14. – P. 131–164.
- Seacord R.C. Effective C: An Introduction to Professional C Programming. – San Francisco: No Starch Press, 2020.
- MITRE. CWE-125: Out-of-bounds Read. – URL: https://cwe.mitre.org/data/definitions/125.html (accessed: 12.03.2026).
- ISO/IEC 11172-3. Information technology — Coding of moving pictures and associated audio for digital storage media at up to about 1.5 Mbit/s — Part 3: Audio. – Geneva: ISO/IEC, 1993.
- ISO/IEC 13818-3. Information technology — Generic coding of moving pictures and associated audio information — Part 3: Audio. – Geneva: ISO/IEC, 1998.
- McGraw G. Software Security: Building Security In. – Boston: Addison-Wesley, 2006.
- Lieff. minimp3: lightweight single-header MP3 decoder. – Source code repository. – URL: https://github.com/lieff/minimp3 (accessed: 12.03.2026).
- Mackron D. dr_libs / dr_mp3: lightweight embeddable audio decoding library collection. – Source code repository. – URL: https://github.com/mackron/dr_libs (accessed: 12.03.2026).
- Underbit Technologies. libmad: high-quality MPEG audio decoder. – Source code repository. – URL: https://github.com/sezero/libmad (accessed: 12.03.2026).
- Chmelev A. mp3-metadata-robustness-study: reproducible research repository for comparative experiments on malformed Xing/Info metadata handling in lightweight MP3 decoders. – Source code repository. – URL: https://github.com/anchmelev/mp3-metadata-robustness-study (accessed: 12.03.2026).