mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-10-01 04:43:51 +02:00
* Added ID3v2 support for FLAC files. (Fixes #417) * Fix ID3v2 header size calculation, adjust ID3v2 logic for FLAC files --------- Co-authored-by: Vanilagy <[email protected]>
This commit is contained in:
+10
-11
@@ -152,7 +152,11 @@ export const readId3V2Header = (slice: FileSlice): Id3V2Header | null => {
|
||||
return null;
|
||||
}
|
||||
|
||||
const size = decodeSynchsafe(sizeRaw);
|
||||
let size = decodeSynchsafe(sizeRaw);
|
||||
|
||||
if (flags & Id3V2HeaderFlags.Footer) {
|
||||
size += ID3_V2_HEADER_SIZE;
|
||||
}
|
||||
|
||||
return { majorVersion, revision, flags, size };
|
||||
};
|
||||
@@ -165,12 +169,12 @@ export const parseId3V2Tag = (slice: FileSlice, header: Id3V2Header, tags: Metad
|
||||
return;
|
||||
}
|
||||
|
||||
const bytes = readBytes(slice, header.size);
|
||||
const reader = new Id3V2Reader(header, bytes);
|
||||
const dataSize = (header.flags & Id3V2HeaderFlags.Footer)
|
||||
? header.size - ID3_V2_HEADER_SIZE
|
||||
: header.size;
|
||||
|
||||
if (header.flags & Id3V2HeaderFlags.Footer) {
|
||||
reader.removeFooter();
|
||||
}
|
||||
const bytes = readBytes(slice, dataSize);
|
||||
const reader = new Id3V2Reader(header, bytes);
|
||||
|
||||
if ((header.flags & Id3V2HeaderFlags.Unsynchronisation) && header.majorVersion === 3) {
|
||||
reader.ununsynchronizeAll();
|
||||
@@ -463,11 +467,6 @@ export class Id3V2Reader {
|
||||
this.view = new DataView(this.bytes.buffer);
|
||||
}
|
||||
|
||||
removeFooter() {
|
||||
this.bytes = this.bytes.subarray(0, this.bytes.length - ID3_V2_HEADER_SIZE);
|
||||
this.view = new DataView(this.bytes.buffer);
|
||||
}
|
||||
|
||||
readBytes(length: number) {
|
||||
const slice = this.bytes.subarray(this.pos, this.pos + length);
|
||||
this.pos += length;
|
||||
|
||||
Reference in New Issue
Block a user