mirror of
https://github.com/taglib/taglib.git
synced 2025-06-03 09:08:09 -04:00
Avoid reading an entire ID3v2 tag when skipping it.
This commit is contained in:
parent
269e78f1a0
commit
73b9b9b58d
@ -434,18 +434,18 @@ long MPEG::File::firstFrameOffset()
|
||||
long position = 0;
|
||||
|
||||
if(ID3v2Tag()) {
|
||||
position = d->ID3v2Location + ID3v2Tag()->header()->completeTagSize();
|
||||
|
||||
// Skip duplicate ID3v2 tags.
|
||||
|
||||
// Workaround for some faulty files that have duplicate ID3v2 tags.
|
||||
// Combination of EAC and LAME creates such files when configured incorrectly.
|
||||
|
||||
position = d->ID3v2Location + ID3v2Tag()->header()->completeTagSize();
|
||||
|
||||
long location;
|
||||
while((location = findID3v2(position)) >= 0) {
|
||||
ID3v2::Tag dupTag(this, location);
|
||||
position = location + dupTag.header()->completeTagSize();
|
||||
seek(location);
|
||||
const ID3v2::Header header(readBlock(ID3v2::Header::size()));
|
||||
position = location + header.completeTagSize();
|
||||
|
||||
debug("MPEG::File::firstFrameOffset() - Duplicate ID3v2 tag found.");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user