[Cuesheet Input] Fix metadata handling by merge
The inputs now have their own metadata function, so it should merge in the track tags from the Cuesheet, and not just forward it to the decoder. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
ab16c43c85
commit
aaade58842
3 changed files with 30 additions and 16 deletions
|
@ -10,7 +10,9 @@
|
||||||
|
|
||||||
#import "CueSheet.h"
|
#import "CueSheet.h"
|
||||||
#import "CueSheetContainer.h"
|
#import "CueSheetContainer.h"
|
||||||
#import "CueSheetTrack.h"
|
#import "CueSheetMetadataReader.h"
|
||||||
|
|
||||||
|
#import "NSDictionary+Merge.h"
|
||||||
|
|
||||||
#import "Logging.h"
|
#import "Logging.h"
|
||||||
|
|
||||||
|
@ -45,10 +47,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDictionary *)metadata {
|
- (NSDictionary *)metadata {
|
||||||
|
NSDictionary *metadata = @{};
|
||||||
|
if(track != nil)
|
||||||
|
metadata = [CueSheetMetadataReader processDataForTrack:track];
|
||||||
if(decoder != nil)
|
if(decoder != nil)
|
||||||
return [decoder metadata];
|
return [metadata dictionaryByMergingWith:[decoder metadata]];
|
||||||
else
|
else
|
||||||
return @{};
|
return metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)open:(id<CogSource>)s {
|
- (BOOL)open:(id<CogSource>)s {
|
||||||
|
|
|
@ -10,7 +10,11 @@
|
||||||
|
|
||||||
#import "Plugin.h"
|
#import "Plugin.h"
|
||||||
|
|
||||||
|
#import "CueSheetTrack.h"
|
||||||
|
|
||||||
@interface CueSheetMetadataReader : NSObject <CogMetadataReader> {
|
@interface CueSheetMetadataReader : NSObject <CogMetadataReader> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSDictionary *)processDataForTrack:(CueSheetTrack *)track;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
#import "CueSheetDecoder.h"
|
#import "CueSheetDecoder.h"
|
||||||
|
|
||||||
#import "CueSheet.h"
|
#import "CueSheet.h"
|
||||||
#import "CueSheetTrack.h"
|
|
||||||
|
|
||||||
#import "AudioMetadataReader.h"
|
#import "AudioMetadataReader.h"
|
||||||
#import "NSDictionary+Merge.h"
|
#import "NSDictionary+Merge.h"
|
||||||
|
@ -68,6 +67,16 @@
|
||||||
if(!embedded)
|
if(!embedded)
|
||||||
fileMetadata = [audioMetadataReader metadataForURL:[track url] skipCue:YES];
|
fileMetadata = [audioMetadataReader metadataForURL:[track url] skipCue:YES];
|
||||||
|
|
||||||
|
NSDictionary *cuesheetMetadata = [CueSheetMetadataReader processDataForTrack:track];
|
||||||
|
|
||||||
|
return [cuesheetMetadata dictionaryByMergingWith:fileMetadata];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (NSDictionary *)processDataForTrack:(CueSheetTrack *)track {
|
||||||
NSMutableDictionary *cuesheetMetadata = [[NSMutableDictionary alloc] init];
|
NSMutableDictionary *cuesheetMetadata = [[NSMutableDictionary alloc] init];
|
||||||
|
|
||||||
if([track artist]) [cuesheetMetadata setValue:[track artist] forKey:@"artist"];
|
if([track artist]) [cuesheetMetadata setValue:[track artist] forKey:@"artist"];
|
||||||
|
@ -81,11 +90,7 @@
|
||||||
if([track trackGain]) [cuesheetMetadata setValue:[NSNumber numberWithFloat:[track trackGain]] forKey:@"replayGainTrackGain"];
|
if([track trackGain]) [cuesheetMetadata setValue:[NSNumber numberWithFloat:[track trackGain]] forKey:@"replayGainTrackGain"];
|
||||||
if([track trackPeak]) [cuesheetMetadata setValue:[NSNumber numberWithFloat:[track trackPeak]] forKey:@"replayGainTrackPeak"];
|
if([track trackPeak]) [cuesheetMetadata setValue:[NSNumber numberWithFloat:[track trackPeak]] forKey:@"replayGainTrackPeak"];
|
||||||
|
|
||||||
return [cuesheetMetadata dictionaryByMergingWith:fileMetadata];
|
return [NSDictionary dictionaryWithDictionary:cuesheetMetadata];
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Reference in a new issue