TagLib: Update metadata readers
Update the readers to support the newly added tag fields, and also read the supported format list from the library itself. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
65e2da2d9e
commit
7e23e80b24
2 changed files with 72 additions and 50 deletions
|
@ -66,37 +66,43 @@
|
|||
if(tag) {
|
||||
TagLib::String artist, albumartist, composer, title, album, genre, comment, unsyncedlyrics;
|
||||
int year, track, disc;
|
||||
float rgAlbumGain, rgAlbumPeak, rgTrackGain, rgTrackPeak;
|
||||
TagLib::Tag::ReplayGain rg;
|
||||
TagLib::String cuesheet;
|
||||
TagLib::String soundcheck;
|
||||
|
||||
artist = tag->artist();
|
||||
//albumartist = tag->albumartist();
|
||||
//composer = tag->composer();
|
||||
albumartist = tag->albumartist();
|
||||
composer = tag->composer();
|
||||
title = tag->title();
|
||||
album = tag->album();
|
||||
genre = tag->genre();
|
||||
comment = tag->comment();
|
||||
//cuesheet = tag->cuesheet();
|
||||
//unsyncedlyrics = tag->unsyncedlyrics();
|
||||
cuesheet = tag->cuesheet();
|
||||
unsyncedlyrics = tag->unsyncedlyrics();
|
||||
|
||||
year = tag->year();
|
||||
[dict setObject:@(year) forKey:@"year"];
|
||||
if(year)
|
||||
[dict setObject:@(year) forKey:@"year"];
|
||||
|
||||
track = tag->track();
|
||||
[dict setObject:@(track) forKey:@"track"];
|
||||
if(track)
|
||||
[dict setObject:@(track) forKey:@"track"];
|
||||
|
||||
/*disc = tag->disc();
|
||||
[dict setObject:@(disc) forKey:@"disc"];*/
|
||||
disc = tag->disc();
|
||||
if(disc)
|
||||
[dict setObject:@(disc) forKey:@"disc"];
|
||||
|
||||
/*rgAlbumGain = tag->rgAlbumGain();
|
||||
rgAlbumPeak = tag->rgAlbumPeak();
|
||||
rgTrackGain = tag->rgTrackGain();
|
||||
rgTrackPeak = tag->rgTrackPeak();
|
||||
[dict setObject:@(rgAlbumGain) forKey:@"replaygain_album_gain"];
|
||||
[dict setObject:@(rgAlbumPeak) forKey:@"replaygain_album_peak"];
|
||||
[dict setObject:@(rgTrackGain) forKey:@"replaygain_track_gain"];
|
||||
[dict setObject:@(rgTrackPeak) forKey:@"replaygain_track_peak"];
|
||||
rg = tag->replaygain();
|
||||
if(!rg.isEmpty()) {
|
||||
if(rg.albumGainSet())
|
||||
[dict setObject:@(rg.albumGain()) forKey:@"replaygain_album_gain"];
|
||||
if(rg.albumPeakSet())
|
||||
[dict setObject:@(rg.albumPeak()) forKey:@"replaygain_album_peak"];
|
||||
if(rg.trackGainSet())
|
||||
[dict setObject:@(rg.trackGain()) forKey:@"replaygain_track_gain"];
|
||||
if(rg.trackPeakSet())
|
||||
[dict setObject:@(rg.trackPeak()) forKey:@"replaygain_track_peak"];
|
||||
}
|
||||
|
||||
soundcheck = tag->soundcheck();
|
||||
if(!soundcheck.isEmpty()) {
|
||||
|
@ -108,13 +114,16 @@
|
|||
}
|
||||
|
||||
if(wantedTag.size() >= 10) {
|
||||
float volume1 = -log10((double)((uint32_t)wantedTag[0].toInt(16)) / 1000) * 10;
|
||||
float volume2 = -log10((double)((uint32_t)wantedTag[1].toInt(16)) / 1000) * 10;
|
||||
float volumeToUse = MIN(volume1, volume2);
|
||||
float volumeScale = pow(10, volumeToUse / 20);
|
||||
[dict setObject:@(volumeScale) forKey:@"volume"];
|
||||
bool ok1, ok2;
|
||||
float volume1 = -log10((double)((uint32_t)wantedTag[0].toInt(&ok1, 16)) / 1000) * 10;
|
||||
float volume2 = -log10((double)((uint32_t)wantedTag[1].toInt(&ok2, 16)) / 1000) * 10;
|
||||
if(ok1 && ok2) {
|
||||
float volumeToUse = MIN(volume1, volume2);
|
||||
float volumeScale = pow(10, volumeToUse / 20);
|
||||
[dict setObject:@(volumeScale) forKey:@"volume"];
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
if(!artist.isEmpty())
|
||||
[dict setObject:[NSString stringWithUTF8String:artist.toCString(true)] forKey:@"artist"];
|
||||
|
|
|
@ -78,41 +78,47 @@
|
|||
if(tag) {
|
||||
TagLib::String artist, albumartist, composer, title, album, genre, comment, unsyncedlyrics;
|
||||
int year, track, disc;
|
||||
float rgAlbumGain, rgAlbumPeak, rgTrackGain, rgTrackPeak;
|
||||
TagLib::Tag::ReplayGain rg;
|
||||
TagLib::String cuesheet;
|
||||
TagLib::String soundcheck;
|
||||
|
||||
artist = tag->artist();
|
||||
//albumartist = tag->albumartist();
|
||||
//composer = tag->composer();
|
||||
albumartist = tag->albumartist();
|
||||
composer = tag->composer();
|
||||
title = tag->title();
|
||||
;
|
||||
|
||||
album = tag->album();
|
||||
genre = tag->genre();
|
||||
comment = tag->comment();
|
||||
//cuesheet = tag->cuesheet();
|
||||
cuesheet = tag->cuesheet();
|
||||
|
||||
//unsyncedlyrics = tag->unsyncedlyrics();
|
||||
unsyncedlyrics = tag->unsyncedlyrics();
|
||||
|
||||
year = tag->year();
|
||||
[dict setObject:@(year) forKey:@"year"];
|
||||
if(year)
|
||||
[dict setObject:@(year) forKey:@"year"];
|
||||
|
||||
track = tag->track();
|
||||
[dict setObject:@(track) forKey:@"track"];
|
||||
if(track)
|
||||
[dict setObject:@(track) forKey:@"track"];
|
||||
|
||||
/*disc = tag->disc();
|
||||
[dict setObject:@(disc) forKey:@"disc"];*/
|
||||
disc = tag->disc();
|
||||
if(disc)
|
||||
[dict setObject:@(disc) forKey:@"disc"];
|
||||
|
||||
/*rgAlbumGain = tag->rgAlbumGain();
|
||||
rgAlbumPeak = tag->rgAlbumPeak();
|
||||
rgTrackGain = tag->rgTrackGain();
|
||||
rgTrackPeak = tag->rgTrackPeak();
|
||||
[dict setObject:@(rgAlbumGain) forKey:@"replaygain_album_gain"];
|
||||
[dict setObject:@(rgAlbumPeak) forKey:@"replaygain_album_peak"];
|
||||
[dict setObject:@(rgTrackGain) forKey:@"replaygain_track_gain"];
|
||||
[dict setObject:@(rgTrackPeak) forKey:@"replaygain_track_peak"];*/
|
||||
rg = tag->replaygain();
|
||||
if(!rg.isEmpty()) {
|
||||
if(rg.albumGainSet())
|
||||
[dict setObject:@(rg.albumGain()) forKey:@"replaygain_album_gain"];
|
||||
if(rg.albumPeakSet())
|
||||
[dict setObject:@(rg.albumPeak()) forKey:@"replaygain_album_peak"];
|
||||
if(rg.trackGainSet())
|
||||
[dict setObject:@(rg.trackGain()) forKey:@"replaygain_track_gain"];
|
||||
if(rg.trackPeakSet())
|
||||
[dict setObject:@(rg.trackPeak()) forKey:@"replaygain_track_peak"];
|
||||
}
|
||||
|
||||
/*soundcheck = tag->soundcheck();
|
||||
soundcheck = tag->soundcheck();
|
||||
if(!soundcheck.isEmpty()) {
|
||||
TagLib::StringList tag = soundcheck.split(" ");
|
||||
TagLib::StringList wantedTag;
|
||||
|
@ -122,13 +128,16 @@
|
|||
}
|
||||
|
||||
if(wantedTag.size() >= 10) {
|
||||
float volume1 = -log10((double)((uint32_t)wantedTag[0].toInt(16)) / 1000) * 10;
|
||||
float volume2 = -log10((double)((uint32_t)wantedTag[1].toInt(16)) / 1000) * 10;
|
||||
float volumeToUse = MIN(volume1, volume2);
|
||||
float volumeScale = pow(10, volumeToUse / 20);
|
||||
[dict setObject:@(volumeScale) forKey:@"volume"];
|
||||
bool ok1, ok2;
|
||||
float volume1 = -log10((double)((uint32_t)wantedTag[0].toInt(&ok1, 16)) / 1000) * 10;
|
||||
float volume2 = -log10((double)((uint32_t)wantedTag[1].toInt(&ok2, 16)) / 1000) * 10;
|
||||
if(ok1 && ok2) {
|
||||
float volumeToUse = MIN(volume1, volume2);
|
||||
float volumeScale = pow(10, volumeToUse / 20);
|
||||
[dict setObject:@(volumeScale) forKey:@"volume"];
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
if(!artist.isEmpty())
|
||||
[dict setObject:[NSString stringWithUTF8String:artist.toCString(true)] forKey:@"artist"];
|
||||
|
@ -192,8 +201,12 @@
|
|||
}
|
||||
|
||||
+ (NSArray *)fileTypes {
|
||||
// May be a way to get a list of supported formats
|
||||
return @[@"asf", @"wma", @"mpc", @"mp3", @"mp4", @"m4a", @"apl", @"wav", @"aif", @"aiff", @"wv", @"wvp", @"ogg", @"oga", @"opus"];
|
||||
NSMutableArray *extlist = [[NSMutableArray alloc] init];
|
||||
TagLib::StringList exts = TagLib::FileRef::defaultFileExtensions();
|
||||
for(const auto &ext : exts) {
|
||||
[extlist addObject:[NSString stringWithUTF8String:ext.toCString(true)]];
|
||||
}
|
||||
return [NSArray arrayWithArray:extlist];
|
||||
}
|
||||
|
||||
+ (NSArray *)mimeTypes {
|
||||
|
|
Loading…
Reference in a new issue