Skip to content

feat(encoder): add multi-format support with mp3, aac, and opus presets#41

Merged
flexiondotorg merged 2 commits into
mainfrom
formats
Jun 8, 2026
Merged

feat(encoder): add multi-format support with mp3, aac, and opus presets#41
flexiondotorg merged 2 commits into
mainfrom
formats

Conversation

@flexiondotorg

Copy link
Copy Markdown
Contributor
  • Introduce formatPreset type mapping each format to its codec, bitrate, sample rate, muxer, and extension
  • Support --format flag (mp3, aac, opus) with mp3 as default
  • MP3: CBR 112/192kbps, 44.1kHz, LAME quality 3, 20.5kHz lowpass, ID3v2.4 tags with cover art
  • AAC: CBR 64/128kbps, 44.1kHz, iTunes MP4 atoms with cover art, .m4a extension
  • Opus: VBR ~32/~48kbps, 48kHz, Vorbis comments (text only), .opus extension
  • Update filename generation to use format-specific extensions instead of hardcoded .mp3
  • Remove obsolete ID3v2 writer library; use FFmpeg muxer-native tagging for all formats
  • Add encoder tests covering each format's preset configuration
  • Update documentation and CLI reference for multi-format output
  • Add .tailor.yml configuration for linting and static analysis
  • Refactor command-line interface to show Ready to encode message with format name

Closes #9

- Introduce formatPreset type mapping each format to its codec, bitrate,
  sample rate, muxer, and extension
- Support --format flag (mp3, aac, opus) with mp3 as default
- MP3: CBR 112/192kbps, 44.1kHz, LAME quality 3, 20.5kHz lowpass,
  ID3v2.4 tags with cover art
- AAC: CBR 64/128kbps, 44.1kHz, iTunes MP4 atoms with cover art, .m4a
  extension
- Opus: VBR ~32/~48kbps, 48kHz, Vorbis comments (text only), .opus
  extension
- Update filename generation to use format-specific extensions instead
  of hardcoded .mp3
- Remove obsolete ID3v2 writer library; use FFmpeg muxer-native tagging
  for all formats
- Add encoder tests covering each format's preset configuration
- Update documentation and CLI reference for multi-format output
- Add .tailor.yml configuration for linting and static analysis
- Refactor command-line interface to show Ready to encode message with
  format name

Closes #9

Signed-off-by: Martin Wimpress <code@wimpress.io>

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0 issues found across 1 file (changes from recent commits).

Requires human review: This PR introduces multi-format support with new encoding presets, replaces the ID3 tag writer with FFmpeg muxer-native tagging, and modifies the core encoder pipeline, which are significant changes to critical business logic that require human review to ensure correctness and avoid regressions.

Re-trigger cubic

@flexiondotorg flexiondotorg merged commit 56f2a00 into main Jun 8, 2026
15 checks passed
@flexiondotorg flexiondotorg deleted the formats branch June 8, 2026 17:27
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.

feat: OPUS and OGG support

1 participant