FFmpeg/FLAC/Opus/Vorbis Inputs: Fix metadata
The dynamic metadata functions should only activate for unseekable streams, not seekable streams, and not local files. Signed-off-by: Christopher Snowhill <kode54@gmail.com>CQTexperiment
parent
0012d1b17e
commit
e2e83ea760
|
@ -461,6 +461,8 @@ int64_t ffmpeg_seek(void *opaque, int64_t offset, int whence) {
|
|||
}
|
||||
|
||||
- (void)updateMetadata {
|
||||
if([source seekable]) return;
|
||||
|
||||
const AVDictionaryEntry *tag = NULL;
|
||||
NSString *_genre = genre;
|
||||
NSString *_album = album;
|
||||
|
|
|
@ -230,10 +230,11 @@ void MetadataCallback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMeta
|
|||
}
|
||||
}
|
||||
|
||||
if(![_genre isEqual:flacDecoder->genre] ||
|
||||
![_album isEqual:flacDecoder->album] ||
|
||||
![_artist isEqual:flacDecoder->artist] ||
|
||||
![_title isEqual:flacDecoder->title]) {
|
||||
if(![flacDecoder->source seekable] &&
|
||||
(![_genre isEqual:flacDecoder->genre] ||
|
||||
![_album isEqual:flacDecoder->album] ||
|
||||
![_artist isEqual:flacDecoder->artist] ||
|
||||
![_title isEqual:flacDecoder->title])) {
|
||||
flacDecoder->genre = _genre;
|
||||
flacDecoder->album = _album;
|
||||
flacDecoder->artist = _artist;
|
||||
|
@ -365,25 +366,27 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
|
|||
}
|
||||
}
|
||||
|
||||
Class sourceClass = [source class];
|
||||
if([sourceClass isEqual:NSClassFromString(@"HTTPSource")]) {
|
||||
HTTPSource *httpSource = (HTTPSource *)source;
|
||||
if([httpSource hasMetadata]) {
|
||||
NSDictionary *metadata = [httpSource metadata];
|
||||
NSString *_genre = [metadata valueForKey:@"genre"];
|
||||
NSString *_album = [metadata valueForKey:@"album"];
|
||||
NSString *_artist = [metadata valueForKey:@"artist"];
|
||||
NSString *_title = [metadata valueForKey:@"title"];
|
||||
if(![_genre isEqualToString:genre] ||
|
||||
![_album isEqualToString:album] ||
|
||||
![_artist isEqualToString:artist] ||
|
||||
![_title isEqualToString:title]) {
|
||||
genre = _genre;
|
||||
album = _album;
|
||||
artist = _artist;
|
||||
title = _title;
|
||||
[self willChangeValueForKey:@"metadata"];
|
||||
[self didChangeValueForKey:@"metadata"];
|
||||
if(![source seekable]) {
|
||||
Class sourceClass = [source class];
|
||||
if([sourceClass isEqual:NSClassFromString(@"HTTPSource")]) {
|
||||
HTTPSource *httpSource = (HTTPSource *)source;
|
||||
if([httpSource hasMetadata]) {
|
||||
NSDictionary *metadata = [httpSource metadata];
|
||||
NSString *_genre = [metadata valueForKey:@"genre"];
|
||||
NSString *_album = [metadata valueForKey:@"album"];
|
||||
NSString *_artist = [metadata valueForKey:@"artist"];
|
||||
NSString *_title = [metadata valueForKey:@"title"];
|
||||
if(![_genre isEqualToString:genre] ||
|
||||
![_album isEqualToString:album] ||
|
||||
![_artist isEqualToString:artist] ||
|
||||
![_title isEqualToString:title]) {
|
||||
genre = _genre;
|
||||
album = _album;
|
||||
artist = _artist;
|
||||
title = _title;
|
||||
[self willChangeValueForKey:@"metadata"];
|
||||
[self didChangeValueForKey:@"metadata"];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -158,10 +158,11 @@ opus_int64 sourceTell(void *_stream) {
|
|||
}
|
||||
}
|
||||
|
||||
if(![_genre isEqual:genre] ||
|
||||
![_album isEqual:album] ||
|
||||
![_artist isEqual:artist] ||
|
||||
![_title isEqual:title]) {
|
||||
if(![source seekable] &&
|
||||
(![_genre isEqual:genre] ||
|
||||
![_album isEqual:album] ||
|
||||
![_artist isEqual:artist] ||
|
||||
![_title isEqual:title])) {
|
||||
genre = _genre;
|
||||
album = _album;
|
||||
artist = _artist;
|
||||
|
@ -173,6 +174,8 @@ opus_int64 sourceTell(void *_stream) {
|
|||
}
|
||||
|
||||
- (void)updateIcyMetadata {
|
||||
if([source seekable]) return;
|
||||
|
||||
NSString *_genre = genre;
|
||||
NSString *_album = album;
|
||||
NSString *_artist = artist;
|
||||
|
|
|
@ -107,6 +107,8 @@ long sourceTell(void *datasource) {
|
|||
}
|
||||
|
||||
- (void)updateMetadata {
|
||||
if([source seekable]) return;
|
||||
|
||||
const vorbis_comment *comment = ov_comment(&vorbisRef, -1);
|
||||
|
||||
if(comment) {
|
||||
|
@ -153,6 +155,8 @@ long sourceTell(void *datasource) {
|
|||
}
|
||||
|
||||
- (void)updateIcyMetadata {
|
||||
if([source seekable]) return;
|
||||
|
||||
NSString *_genre = genre;
|
||||
NSString *_album = album;
|
||||
NSString *_artist = artist;
|
||||
|
|
Loading…
Reference in New Issue