Implement MP3 metadata (ID3v1/2) read & write

This commit is contained in:
Vanilagy
2025-08-25 17:43:40 +02:00
parent 72eb54391e
commit fb0c41aa09
13 changed files with 1014 additions and 51 deletions
+29
View File
@@ -156,3 +156,32 @@ export const readFrameHeader = (word: number, reader: { pos: number; fileSize: n
audioSamplesInFrame,
};
};
export const encodeSynchsafe = (unsynchsafed: number) => {
let mask = 0x7f;
let synchsafed = 0;
let unsynchsafedRest = unsynchsafed;
while ((mask ^ 0x7fffffff) !== 0) {
synchsafed = unsynchsafedRest & ~mask;
synchsafed <<= 1;
synchsafed |= unsynchsafedRest & mask;
mask = ((mask + 1) << 8) - 1;
unsynchsafedRest = synchsafed;
}
return synchsafed;
};
export const decodeSynchsafe = (synchsafed: number) => {
let mask = 0x7f000000;
let unsynchsafed = 0;
while (mask !== 0) {
unsynchsafed >>= 1;
unsynchsafed |= synchsafed & mask;
mask >>= 8;
}
return unsynchsafed;
};