mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 02:43:48 +02:00
Implement MP3 metadata (ID3v1/2) read & write
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user