Borewit
660432dc38
Prevent negative ignore when seeking APEv2 header in ID3v1Parser
2026-03-26 17:14:56 +01:00
Borewit
2beb45c9ab
Fix TypeScript decleration inclusion
2026-03-12 19:34:22 +01:00
Borewit
318e963e21
Fix CWE-85 by avoiding infinite loop in ASF
2026-03-11 21:52:47 +01:00
Borewit
5b7e69c82e
Simplify tsconfig.prod.json by removing unused options
2026-03-11 21:47:56 +01:00
Borewit
922ffabad7
Map .wma and .wmv. extension to AsfParser
2026-03-11 17:43:43 +01:00
Borewit
a40b3296f6
Separate production and development build
...
Only the development includes source maps
2026-02-28 13:53:59 +01:00
Borewit
952ceae807
Fix miscalculation Ogg/Vorbis, duration miscalculation
...
Fix miscalculation occurring when Ogg/Vorbis files when the duration option is not explicitly enabled. In that case, the parser performs a partial read of the file and reports the duration based only on the processed portion, resulting in an incomplete value.
Resolves #2518
2026-02-16 19:30:57 +01:00
ma225tq
7c57bdcbdf
refactor(MetadataCollector): add common types for SingularArtistId & PluralArtistId
2026-02-08 14:15:46 +01:00
ma225tq
86b5d9b7c7
refactor(MetaDataCollector): extract artist/albumartist handling into helper functions
2026-02-08 14:15:46 +01:00
ma225tq
17216a903a
fix(type.ts): correct indentation in albumartist field description
2026-02-08 14:15:46 +01:00
ma225tq
d1916dea39
test: add test for multiple album artists in FLAC files
2026-02-08 14:15:46 +01:00
ma225tq
2f35aacd29
fix(type.ts): correct albumartist field description
2026-02-08 14:15:46 +01:00
ma225tq
829b923e37
fix(type.ts): clarify albumartist field description
...
This was done to help tell the difference between the existing albumartist and the new albumartists
2026-02-08 14:15:46 +01:00
ma225tq
cd43849970
feat(MetadataCollector): add common.albumartists array support
...
Add albumartists field following the same pattern as artists:
- Multiple TPE2 frames or null-separated values now populate common.albumartists array (like TPE1 does for common.artists)
- Cross-population between albumartist/albumartists fields
2026-02-08 14:15:46 +01:00
glebrock
e191ae87e8
#2574 : add support for correctly populating the 'metadata.common.grouping' field for a file with an Tunes IDv2.2 tag with the 'GP1' frame
2026-02-02 20:18:17 +01:00
Borewit
4909b6fe12
fix(id3v2): prevent crash when no tag frames present
...
Fix TypeError: Cannot read properties of undefined (reading 'filter') by defaulting missing frame/tag collections to empty arrays/objects.
- Add MP3 sample without tags + regression test
- Update related TS configs and dependencies/lockfile
2026-01-28 19:54:25 +01:00
Borewit
8c822709d3
Add ID3v2 chapter support
2026-01-24 19:48:05 +01:00
Borewit
b13fab0e7b
Depend on win-guid for Windows GUID conversion
2026-01-14 18:04:39 +01:00
Borewit
81dca61fee
Fix small code smalls, update Biome to 2.3.11
2026-01-06 15:50:42 +01:00
Borewit
64d2148d11
id3v2: harden frame parsing and fix edge cases
...
- Correctly handle missing null terminators in text fields
- Avoid reading text encoding for frames that do not define it
- Decode URL link frames according to ID3v2 specification
- Improve robustness of POPM and GEOB frame parsing
2026-01-06 13:39:38 +01:00
Borewit
fd8b32b309
Improve findZero:
...
- eliminates all OOB reads.
- makes the “not found” behavior explicit and consistent.
2026-01-06 13:39:38 +01:00
Borewit
7ad0198d67
Improve readNullTerminatedString
...
- Don’t overwrite `uint8Array`, keep `valueArray` so the length comparison is correct and readable.
- Replace `zeroIndex === -`1 with `zeroIndex >= valueArray.length`.
2026-01-06 13:39:38 +01:00
Borewit
0e4156b986
id3v2: tighten frame decoding, trim nulls without regex, reduce allocations
...
- Use flatMap for TCON genre expansion to avoid concat/reduce allocations
- Add trimNullPadding helper and replace regex-based trailing null trimming
- Add defensive length checks for COMM/USLT and POPM parsing
- Use decodeUintBE consistently for POPM counter decoding
2026-01-06 13:39:38 +01:00
Borewit
26696ec75f
Removed the eager, unconditional TextEncodingToken.get(...) at the start of readData()
2026-01-06 13:39:38 +01:00
Borewit
da2f4ca2e9
Better reuse FrameParser.readNullTerminatedString
2026-01-06 13:39:38 +01:00
Borewit
abbe09323d
Improve MP3 parsing code
...
Favor Uint8Array.subarray, over passing offset and length
2026-01-06 13:39:38 +01:00
Borewit
65ec1c8fbd
Move header parsing to FrameHeader.ts file, to allow re-using
...
Replace passing offset, and utilize `Uint8Array.subarray` instead.
2026-01-06 13:39:38 +01:00
Borewit
af6caa7738
Improve MP4 bitrate calculation
...
Avoid using bitrate using `mdat` box, which could contain multiple streams
2025-11-23 12:25:29 +01:00
Borewit
1944b80e8c
Fix bitrate calculation over multiple mdat boxes
2025-11-19 21:50:04 +01:00
Borewit
9f5f545136
Fix Ogg/Opus duration calculation.
...
Duration calculation requires to parse the entire Ogg/Opus file.
2025-11-15 19:24:15 +01:00
Gérald LEBAN
44f262f011
Add support for vorbis unsynced lyrics ( #2489 )
...
Extract unsynced vorbis lyrics
---------
Co-authored-by: Borewit <Borewit@users.noreply.github.com >
2025-11-09 14:55:57 +01:00
Borewit
65e6146668
Add support Apple’s QuickTime File Format
2025-11-09 14:14:54 +01:00
Borewit
044e565de8
Update Biome to 2.3.4
2025-11-09 14:10:39 +01:00
Borewit
5445cbb816
Support variable length PCNT and POPM numeric values.
...
Add `common.playCounter`
2025-09-15 20:36:21 +02:00
Borewit
bcae011214
Favor subarray over slice, reusing instead of copying data
2025-09-15 20:28:29 +02:00
Borewit
ff13f3e03c
Map Vorbis.ENCODER and Vorbis VORBIS_COMMENT vendor to common.tool
2025-09-15 17:25:37 +02:00
Borewit
95c35ff566
Update Biome to 2.2.0
2025-08-19 12:28:41 +02:00
Borewit
06d83b2e7a
Fix missing uint8array-extras dependency
2025-08-19 12:09:40 +02:00
Borewit
763f72854c
Replace @kayahr/text-encoding with @borewit/text-codec
2025-08-13 21:48:37 +01:00
Borewit
a5bc776e6d
Remove uint8array-extras dependency
...
Remove `uint8array-extras` dependency in favour of having the same TextEncoder everywhere.
2025-08-13 09:58:54 +01:00
Borewit
d3bfd7ae4e
Use @kayahr/text-encoding for decoding
...
To avoid problems with unsupported character sets.
2025-08-12 20:39:42 +01:00
Borewit
2849deb89e
CI: Improve structure Ogg unit tests
...
- Move an Ogg/Vorbis test to the correct description.
- Move some Ogg files, to the `ogg` subfolder
2025-07-20 13:32:23 +02:00
Borewit
26104b943e
Embed media logo's
2025-07-20 12:49:49 +02:00
Borewit
c2c9ad9a8d
CI: Update to Biome 2.1.2
2025-07-20 10:09:15 +02:00
Borewit
eb17a5ce65
Fix peek Ogg radio streams
2025-07-19 22:14:35 +02:00
Borewit
3b688f1546
Use strtok3.parseBlob()
...
Instead of streaming Blob, uses `Blob.slice()`.
2025-07-17 00:26:37 +02:00
Borewit
121078b757
Add support for Ogg/FLAC
2025-07-03 22:17:42 +02:00
Borewit
1824cc1394
Implement handling multiple Ogg sub streams
2025-07-01 12:34:25 +02:00
Borewit
a9094e9829
Indicate on every media file if it contains an audio and/or video stream.
...
Introduces: `format.hasAudio` and `format.hasVideo`
2025-06-30 17:33:09 +02:00
Borewit
754a393fbf
Optimize efficiency ordering tags
2025-06-30 10:31:13 +02:00