mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 05:06:43 +00:00
taglib: update to 1.12
update 1.11.1 (2016-10-24) to 1.12 (2021-02-15) release notes: https://github.com/taglib/taglib/releases remove incorporated patch
This commit is contained in:
parent
ecb3993a10
commit
706ca0072b
@ -2,8 +2,8 @@
|
|||||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||||
|
|
||||||
PKG_NAME="taglib"
|
PKG_NAME="taglib"
|
||||||
PKG_VERSION="1.11.1"
|
PKG_VERSION="1.12"
|
||||||
PKG_SHA256="b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b"
|
PKG_SHA256="7fccd07669a523b07a15bd24c8da1bbb92206cb19e9366c3692af3d79253b703"
|
||||||
PKG_LICENSE="LGPL"
|
PKG_LICENSE="LGPL"
|
||||||
PKG_SITE="http://taglib.github.com/"
|
PKG_SITE="http://taglib.github.com/"
|
||||||
PKG_URL="http://taglib.github.io/releases/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
PKG_URL="http://taglib.github.io/releases/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
From d2e0e5522308ce4c905c205c7bf5972ea71cd6e5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
|
|
||||||
Date: Fri, 20 Jan 2017 21:14:38 +0900
|
|
||||||
Subject: [PATCH] Efficient lookup for an ID3v2 tag in MPEG files with garbage.
|
|
||||||
|
|
||||||
This looks for an ID3v2 tag until reaching the first valid MPEG frame in O(n) time.
|
|
||||||
---
|
|
||||||
taglib/mpeg/mpegfile.cpp | 45 +++++++++++++++++++++++++++++----------------
|
|
||||||
1 file changed, 29 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp
|
|
||||||
index af7253f..c634eeb 100644
|
|
||||||
--- a/taglib/mpeg/mpegfile.cpp
|
|
||||||
+++ b/taglib/mpeg/mpegfile.cpp
|
|
||||||
@@ -488,28 +488,41 @@ long MPEG::File::findID3v2()
|
|
||||||
const ByteVector headerID = ID3v2::Header::fileIdentifier();
|
|
||||||
|
|
||||||
seek(0);
|
|
||||||
+ if(readBlock(headerID.size()) == headerID)
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
- const ByteVector data = readBlock(headerID.size());
|
|
||||||
- if(data.size() < headerID.size())
|
|
||||||
+ Header firstHeader(this, 0, true);
|
|
||||||
+ if(firstHeader.isValid())
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- if(data == headerID)
|
|
||||||
- return 0;
|
|
||||||
+ // Look for an ID3v2 tag until reaching the first valid MPEG frame.
|
|
||||||
|
|
||||||
- if(firstSyncByte(data[0]) && secondSynchByte(data[1]))
|
|
||||||
- return -1;
|
|
||||||
+ char frameSyncBytes[2] = {};
|
|
||||||
+ char tagHeaderBytes[4] = {};
|
|
||||||
+ long position = 0;
|
|
||||||
|
|
||||||
- // Look for the entire file, if neither an MEPG frame or ID3v2 tag was found
|
|
||||||
- // at the beginning of the file.
|
|
||||||
- // We don't care about the inefficiency of the code, since this is a seldom case.
|
|
||||||
+ while(true) {
|
|
||||||
+ seek(position);
|
|
||||||
+ const ByteVector buffer = readBlock(bufferSize());
|
|
||||||
+ if(buffer.isEmpty())
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
- const long tagOffset = find(headerID);
|
|
||||||
- if(tagOffset < 0)
|
|
||||||
- return -1;
|
|
||||||
+ for(unsigned int i = 0; i < buffer.size(); ++i) {
|
|
||||||
+ frameSyncBytes[0] = frameSyncBytes[1];
|
|
||||||
+ frameSyncBytes[1] = buffer[i];
|
|
||||||
+ if(firstSyncByte(frameSyncBytes[0]) && secondSynchByte(frameSyncBytes[1])) {
|
|
||||||
+ Header header(this, position + i - 1, true);
|
|
||||||
+ if(header.isValid())
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- const long frameOffset = firstFrameOffset();
|
|
||||||
- if(frameOffset < tagOffset)
|
|
||||||
- return -1;
|
|
||||||
+ tagHeaderBytes[0] = tagHeaderBytes[1];
|
|
||||||
+ tagHeaderBytes[1] = tagHeaderBytes[2];
|
|
||||||
+ tagHeaderBytes[2] = buffer[i];
|
|
||||||
+ if(headerID == tagHeaderBytes)
|
|
||||||
+ return position + i - 2;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- return tagOffset;
|
|
||||||
+ position += bufferSize();
|
|
||||||
+ }
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user