Skip to content

Fix MP3 detection for raw audio files without ID3 tags#498

Merged
karlobencic merged 2 commits intomainfrom
bugfix/mp3-tags-signature
Feb 2, 2026
Merged

Fix MP3 detection for raw audio files without ID3 tags#498
karlobencic merged 2 commits intomainfrom
bugfix/mp3-tags-signature

Conversation

@karlobencic
Copy link
Contributor

@karlobencic karlobencic commented Feb 2, 2026

Summary

Fixed MP3 detection to properly handle raw MP3 files without ID3 tags. This fixes the "unsupported image format" error when protecting MP3 files generated by encoders like lamejs that produce raw audio frames.

Problem

The previous implementation only checked for the exact byte sequence 0xFF 0xFB for MP3 frame sync, but MP3 frame sync headers can have different second bytes depending on:

  • MPEG version (1, 2, or 2.5)
  • Layer (I, II, or III)
  • CRC protection bit

The proper check is the 11-bit sync word: first byte is 0xFF, and upper 3 bits of second byte must be set (& 0xE0 === 0xE0).

Additionally, parseFromBuffer() assumed all MP3 files had ID3 tags and would try to read the ID3 version from byte 3, which caused errors for raw MP3 files.

Testing

Tested with MP3 files generated by lamejs encoder (used in web audio recording) which produce raw MP3 frames without ID3 tags.

@changeset-bot
Copy link

changeset-bot bot commented Feb 2, 2026

🦋 Changeset detected

Latest commit: 13544ad

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@trustnxt/c2pa-ts Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 2, 2026

@karlobencic karlobencic requested a review from cyraxx February 2, 2026 15:55
@karlobencic karlobencic merged commit 362c715 into main Feb 2, 2026
4 checks passed
@karlobencic karlobencic deleted the bugfix/mp3-tags-signature branch February 2, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants