[TagLib] Disable MP4 tag reader, as it can crash

This MP4 tag reader is buggy. Disable it in favor of FFmpeg decoder's
metadata reader.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
lastfm
Christopher Snowhill 2022-07-02 04:20:01 -07:00
parent a847cbde3b
commit cfcb7c041d
5 changed files with 1 additions and 88 deletions

View File

@ -41,18 +41,6 @@
32AE5A7B14E70ED600420CA0 /* flacproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59C514E70ED600420CA0 /* flacproperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A7C14E70ED600420CA0 /* flacunknownmetadatablock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59C614E70ED600420CA0 /* flacunknownmetadatablock.cpp */; };
32AE5A7D14E70ED600420CA0 /* flacunknownmetadatablock.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59C714E70ED600420CA0 /* flacunknownmetadatablock.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A7E14E70ED600420CA0 /* mp4atom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59C914E70ED600420CA0 /* mp4atom.cpp */; };
32AE5A7F14E70ED600420CA0 /* mp4atom.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59CA14E70ED600420CA0 /* mp4atom.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8014E70ED600420CA0 /* mp4coverart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59CB14E70ED600420CA0 /* mp4coverart.cpp */; };
32AE5A8114E70ED600420CA0 /* mp4coverart.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59CC14E70ED600420CA0 /* mp4coverart.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8214E70ED600420CA0 /* mp4file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59CD14E70ED600420CA0 /* mp4file.cpp */; };
32AE5A8314E70ED600420CA0 /* mp4file.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59CE14E70ED600420CA0 /* mp4file.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8414E70ED600420CA0 /* mp4item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59CF14E70ED600420CA0 /* mp4item.cpp */; };
32AE5A8514E70ED600420CA0 /* mp4item.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D014E70ED600420CA0 /* mp4item.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8614E70ED600420CA0 /* mp4properties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D114E70ED600420CA0 /* mp4properties.cpp */; };
32AE5A8714E70ED600420CA0 /* mp4properties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D214E70ED600420CA0 /* mp4properties.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8814E70ED600420CA0 /* mp4tag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D314E70ED600420CA0 /* mp4tag.cpp */; };
32AE5A8914E70ED600420CA0 /* mp4tag.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D414E70ED600420CA0 /* mp4tag.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8A14E70ED600420CA0 /* mpcfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D614E70ED600420CA0 /* mpcfile.cpp */; };
32AE5A8B14E70ED600420CA0 /* mpcfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D714E70ED600420CA0 /* mpcfile.h */; settings = {ATTRIBUTES = (Public, ); }; };
32AE5A8C14E70ED600420CA0 /* mpcproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D814E70ED600420CA0 /* mpcproperties.cpp */; };
@ -236,18 +224,6 @@
32AE59C514E70ED600420CA0 /* flacproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacproperties.h; sourceTree = "<group>"; };
32AE59C614E70ED600420CA0 /* flacunknownmetadatablock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flacunknownmetadatablock.cpp; sourceTree = "<group>"; };
32AE59C714E70ED600420CA0 /* flacunknownmetadatablock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacunknownmetadatablock.h; sourceTree = "<group>"; };
32AE59C914E70ED600420CA0 /* mp4atom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mp4atom.cpp; sourceTree = "<group>"; };
32AE59CA14E70ED600420CA0 /* mp4atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mp4atom.h; sourceTree = "<group>"; };
32AE59CB14E70ED600420CA0 /* mp4coverart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mp4coverart.cpp; sourceTree = "<group>"; };
32AE59CC14E70ED600420CA0 /* mp4coverart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mp4coverart.h; sourceTree = "<group>"; };
32AE59CD14E70ED600420CA0 /* mp4file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mp4file.cpp; sourceTree = "<group>"; };
32AE59CE14E70ED600420CA0 /* mp4file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mp4file.h; sourceTree = "<group>"; };
32AE59CF14E70ED600420CA0 /* mp4item.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mp4item.cpp; sourceTree = "<group>"; };
32AE59D014E70ED600420CA0 /* mp4item.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mp4item.h; sourceTree = "<group>"; };
32AE59D114E70ED600420CA0 /* mp4properties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mp4properties.cpp; sourceTree = "<group>"; };
32AE59D214E70ED600420CA0 /* mp4properties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mp4properties.h; sourceTree = "<group>"; };
32AE59D314E70ED600420CA0 /* mp4tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mp4tag.cpp; sourceTree = "<group>"; };
32AE59D414E70ED600420CA0 /* mp4tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mp4tag.h; sourceTree = "<group>"; };
32AE59D614E70ED600420CA0 /* mpcfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpcfile.cpp; sourceTree = "<group>"; };
32AE59D714E70ED600420CA0 /* mpcfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpcfile.h; sourceTree = "<group>"; };
32AE59D814E70ED600420CA0 /* mpcproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpcproperties.cpp; sourceTree = "<group>"; };
@ -569,7 +545,6 @@
32AE59BB14E70ED600420CA0 /* fileref.cpp */,
32AE59BC14E70ED600420CA0 /* fileref.h */,
32AE59BD14E70ED600420CA0 /* flac */,
32AE59C814E70ED600420CA0 /* mp4 */,
32AE59D514E70ED600420CA0 /* mpc */,
32AE59DA14E70ED600420CA0 /* mpeg */,
32AE5A1214E70ED600420CA0 /* ogg */,
@ -641,25 +616,6 @@
path = flac;
sourceTree = "<group>";
};
32AE59C814E70ED600420CA0 /* mp4 */ = {
isa = PBXGroup;
children = (
32AE59C914E70ED600420CA0 /* mp4atom.cpp */,
32AE59CA14E70ED600420CA0 /* mp4atom.h */,
32AE59CB14E70ED600420CA0 /* mp4coverart.cpp */,
32AE59CC14E70ED600420CA0 /* mp4coverart.h */,
32AE59CD14E70ED600420CA0 /* mp4file.cpp */,
32AE59CE14E70ED600420CA0 /* mp4file.h */,
32AE59CF14E70ED600420CA0 /* mp4item.cpp */,
32AE59D014E70ED600420CA0 /* mp4item.h */,
32AE59D114E70ED600420CA0 /* mp4properties.cpp */,
32AE59D214E70ED600420CA0 /* mp4properties.h */,
32AE59D314E70ED600420CA0 /* mp4tag.cpp */,
32AE59D414E70ED600420CA0 /* mp4tag.h */,
);
path = mp4;
sourceTree = "<group>";
};
32AE59D514E70ED600420CA0 /* mpc */ = {
isa = PBXGroup;
children = (
@ -1113,12 +1069,6 @@
32AE5A7914E70ED600420CA0 /* flacpicture.h in Headers */,
32AE5A7B14E70ED600420CA0 /* flacproperties.h in Headers */,
32AE5A7D14E70ED600420CA0 /* flacunknownmetadatablock.h in Headers */,
32AE5A7F14E70ED600420CA0 /* mp4atom.h in Headers */,
32AE5A8114E70ED600420CA0 /* mp4coverart.h in Headers */,
32AE5A8314E70ED600420CA0 /* mp4file.h in Headers */,
32AE5A8514E70ED600420CA0 /* mp4item.h in Headers */,
32AE5A8714E70ED600420CA0 /* mp4properties.h in Headers */,
32AE5A8914E70ED600420CA0 /* mp4tag.h in Headers */,
32AE5A8B14E70ED600420CA0 /* mpcfile.h in Headers */,
32AE5A8D14E70ED600420CA0 /* mpcproperties.h in Headers */,
32AE5A8F14E70ED600420CA0 /* id3v1genres.h in Headers */,
@ -1277,12 +1227,6 @@
32AE5A7A14E70ED600420CA0 /* flacproperties.cpp in Sources */,
EDE863C625CF6D710086EFD3 /* ownershipframe.cpp in Sources */,
32AE5A7C14E70ED600420CA0 /* flacunknownmetadatablock.cpp in Sources */,
32AE5A7E14E70ED600420CA0 /* mp4atom.cpp in Sources */,
32AE5A8014E70ED600420CA0 /* mp4coverart.cpp in Sources */,
32AE5A8214E70ED600420CA0 /* mp4file.cpp in Sources */,
32AE5A8414E70ED600420CA0 /* mp4item.cpp in Sources */,
32AE5A8614E70ED600420CA0 /* mp4properties.cpp in Sources */,
32AE5A8814E70ED600420CA0 /* mp4tag.cpp in Sources */,
32AE5A8A14E70ED600420CA0 /* mpcfile.cpp in Sources */,
32AE5A8C14E70ED600420CA0 /* mpcproperties.cpp in Sources */,
32AE5A8E14E70ED600420CA0 /* id3v1genres.cpp in Sources */,

View File

@ -53,8 +53,6 @@ using namespace TagLib;
return dynamic_cast<const ASF::Properties*>(this)->function_name(); \
else if(dynamic_cast<const FLAC::Properties*>(this)) \
return dynamic_cast<const FLAC::Properties*>(this)->function_name(); \
else if(dynamic_cast<const MP4::Properties*>(this)) \
return dynamic_cast<const MP4::Properties*>(this)->function_name(); \
else if(dynamic_cast<const MPC::Properties*>(this)) \
return dynamic_cast<const MPC::Properties*>(this)->function_name(); \
else if(dynamic_cast<const MPEG::Properties*>(this)) \

View File

@ -123,8 +123,6 @@ namespace
return new Ogg::Opus::File(stream, readAudioProperties, audioPropertiesStyle);
if(ext == "TTA")
return new TrueAudio::File(stream, readAudioProperties, audioPropertiesStyle);
if(ext == "M4A" || ext == "M4R" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2" || ext == "M4V")
return new MP4::File(stream, readAudioProperties, audioPropertiesStyle);
if(ext == "WMA" || ext == "ASF")
return new ASF::File(stream, readAudioProperties, audioPropertiesStyle);
if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC")
@ -173,8 +171,6 @@ namespace
file = new Ogg::Opus::File(stream, readAudioProperties, audioPropertiesStyle);
else if(TrueAudio::File::isSupported(stream))
file = new TrueAudio::File(stream, readAudioProperties, audioPropertiesStyle);
else if(MP4::File::isSupported(stream))
file = new MP4::File(stream, readAudioProperties, audioPropertiesStyle);
else if(ASF::File::isSupported(stream))
file = new ASF::File(stream, readAudioProperties, audioPropertiesStyle);
else if(RIFF::AIFF::File::isSupported(stream))
@ -247,8 +243,6 @@ namespace
return new Ogg::Opus::File(fileName, readAudioProperties, audioPropertiesStyle);
if(ext == "TTA")
return new TrueAudio::File(fileName, readAudioProperties, audioPropertiesStyle);
if(ext == "M4A" || ext == "M4R" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2" || ext == "M4V")
return new MP4::File(fileName, readAudioProperties, audioPropertiesStyle);
if(ext == "WMA" || ext == "ASF")
return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle);
if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC")

View File

@ -144,8 +144,6 @@ PropertyMap File::properties() const
return dynamic_cast<const WavPack::File* >(this)->properties();
if(dynamic_cast<const XM::File* >(this))
return dynamic_cast<const XM::File* >(this)->properties();
if(dynamic_cast<const MP4::File* >(this))
return dynamic_cast<const MP4::File* >(this)->properties();
if(dynamic_cast<const ASF::File* >(this))
return dynamic_cast<const ASF::File* >(this)->properties();
if(dynamic_cast<const APEGen::File* >(this))
@ -175,8 +173,6 @@ void File::removeUnsupportedProperties(const StringList &properties)
dynamic_cast<TrueAudio::File* >(this)->removeUnsupportedProperties(properties);
else if(dynamic_cast<WavPack::File* >(this))
dynamic_cast<WavPack::File* >(this)->removeUnsupportedProperties(properties);
else if(dynamic_cast<MP4::File* >(this))
dynamic_cast<MP4::File* >(this)->removeUnsupportedProperties(properties);
else if(dynamic_cast<ASF::File* >(this))
dynamic_cast<ASF::File* >(this)->removeUnsupportedProperties(properties);
else if(dynamic_cast<APEGen::File* >(this))
@ -219,8 +215,6 @@ PropertyMap File::setProperties(const PropertyMap &properties)
return dynamic_cast<WavPack::File* >(this)->setProperties(properties);
else if(dynamic_cast<XM::File* >(this))
return dynamic_cast<XM::File* >(this)->setProperties(properties);
else if(dynamic_cast<MP4::File* >(this))
return dynamic_cast<MP4::File* >(this)->setProperties(properties);
else if(dynamic_cast<ASF::File* >(this))
return dynamic_cast<ASF::File* >(this)->setProperties(properties);
else if(dynamic_cast<APEGen::File* >(this))

View File

@ -10,7 +10,6 @@
#import <taglib/audioproperties.h>
#import <taglib/fileref.h>
#import <taglib/flac/flacfile.h>
#import <taglib/mp4/mp4file.h>
#import <taglib/mpc/mpcproperties.h>
#import <taglib/mpeg/id3v2/frames/attachedpictureframe.h>
#import <taglib/mpeg/id3v2/id3v2tag.h>
@ -162,22 +161,6 @@
}
}
// D-D-D-DOUBLE HACK!
TagLib::MP4::File *m4f = dynamic_cast<TagLib::MP4::File *>(f.file());
if(m4f) {
TagLib::MP4::Tag *tag = m4f->tag();
if(tag) {
auto covr = tag->item("covr");
if(covr.isValid()) {
auto coverArtList = covr.toCoverArtList();
if(!coverArtList.isEmpty()) {
TagLib::MP4::CoverArt coverArt = coverArtList.front();
image = [NSData dataWithBytes:coverArt.data().data() length:coverArt.data().size()];
}
}
}
}
TagLib::Ogg::Vorbis::File *vorbis = dynamic_cast<TagLib::Ogg::Vorbis::File *>(f.file());
if(vorbis) {
TagLib::Ogg::XiphComment *tag = vorbis->tag();
@ -257,7 +240,7 @@
+ (NSArray *)fileTypes {
// May be a way to get a list of supported formats
return @[@"ape", @"asf", @"wma", @"ogg", @"opus", @"mpc", @"flac", @"m4a", @"mp3", @"tak", @"ac3", @"apl", @"dts", @"dtshd", @"tta", @"wav", @"aif", @"aiff", @"wv", @"wvp"];
return @[@"ape", @"asf", @"wma", @"ogg", @"opus", @"mpc", @"flac", @"mp3", @"tak", @"ac3", @"apl", @"dts", @"dtshd", @"tta", @"wav", @"aif", @"aiff", @"wv", @"wvp"];
}
+ (NSArray *)mimeTypes {