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 {
|
- (void)updateMetadata {
|
||||||
|
if([source seekable]) return;
|
||||||
|
|
||||||
const AVDictionaryEntry *tag = NULL;
|
const AVDictionaryEntry *tag = NULL;
|
||||||
NSString *_genre = genre;
|
NSString *_genre = genre;
|
||||||
NSString *_album = album;
|
NSString *_album = album;
|
||||||
|
|
|
@ -230,10 +230,11 @@ void MetadataCallback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMeta
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(![_genre isEqual:flacDecoder->genre] ||
|
if(![flacDecoder->source seekable] &&
|
||||||
![_album isEqual:flacDecoder->album] ||
|
(![_genre isEqual:flacDecoder->genre] ||
|
||||||
![_artist isEqual:flacDecoder->artist] ||
|
![_album isEqual:flacDecoder->album] ||
|
||||||
![_title isEqual:flacDecoder->title]) {
|
![_artist isEqual:flacDecoder->artist] ||
|
||||||
|
![_title isEqual:flacDecoder->title])) {
|
||||||
flacDecoder->genre = _genre;
|
flacDecoder->genre = _genre;
|
||||||
flacDecoder->album = _album;
|
flacDecoder->album = _album;
|
||||||
flacDecoder->artist = _artist;
|
flacDecoder->artist = _artist;
|
||||||
|
@ -365,25 +366,27 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Class sourceClass = [source class];
|
if(![source seekable]) {
|
||||||
if([sourceClass isEqual:NSClassFromString(@"HTTPSource")]) {
|
Class sourceClass = [source class];
|
||||||
HTTPSource *httpSource = (HTTPSource *)source;
|
if([sourceClass isEqual:NSClassFromString(@"HTTPSource")]) {
|
||||||
if([httpSource hasMetadata]) {
|
HTTPSource *httpSource = (HTTPSource *)source;
|
||||||
NSDictionary *metadata = [httpSource metadata];
|
if([httpSource hasMetadata]) {
|
||||||
NSString *_genre = [metadata valueForKey:@"genre"];
|
NSDictionary *metadata = [httpSource metadata];
|
||||||
NSString *_album = [metadata valueForKey:@"album"];
|
NSString *_genre = [metadata valueForKey:@"genre"];
|
||||||
NSString *_artist = [metadata valueForKey:@"artist"];
|
NSString *_album = [metadata valueForKey:@"album"];
|
||||||
NSString *_title = [metadata valueForKey:@"title"];
|
NSString *_artist = [metadata valueForKey:@"artist"];
|
||||||
if(![_genre isEqualToString:genre] ||
|
NSString *_title = [metadata valueForKey:@"title"];
|
||||||
![_album isEqualToString:album] ||
|
if(![_genre isEqualToString:genre] ||
|
||||||
![_artist isEqualToString:artist] ||
|
![_album isEqualToString:album] ||
|
||||||
![_title isEqualToString:title]) {
|
![_artist isEqualToString:artist] ||
|
||||||
genre = _genre;
|
![_title isEqualToString:title]) {
|
||||||
album = _album;
|
genre = _genre;
|
||||||
artist = _artist;
|
album = _album;
|
||||||
title = _title;
|
artist = _artist;
|
||||||
[self willChangeValueForKey:@"metadata"];
|
title = _title;
|
||||||
[self didChangeValueForKey:@"metadata"];
|
[self willChangeValueForKey:@"metadata"];
|
||||||
|
[self didChangeValueForKey:@"metadata"];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,10 +158,11 @@ opus_int64 sourceTell(void *_stream) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(![_genre isEqual:genre] ||
|
if(![source seekable] &&
|
||||||
![_album isEqual:album] ||
|
(![_genre isEqual:genre] ||
|
||||||
![_artist isEqual:artist] ||
|
![_album isEqual:album] ||
|
||||||
![_title isEqual:title]) {
|
![_artist isEqual:artist] ||
|
||||||
|
![_title isEqual:title])) {
|
||||||
genre = _genre;
|
genre = _genre;
|
||||||
album = _album;
|
album = _album;
|
||||||
artist = _artist;
|
artist = _artist;
|
||||||
|
@ -173,6 +174,8 @@ opus_int64 sourceTell(void *_stream) {
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateIcyMetadata {
|
- (void)updateIcyMetadata {
|
||||||
|
if([source seekable]) return;
|
||||||
|
|
||||||
NSString *_genre = genre;
|
NSString *_genre = genre;
|
||||||
NSString *_album = album;
|
NSString *_album = album;
|
||||||
NSString *_artist = artist;
|
NSString *_artist = artist;
|
||||||
|
|
|
@ -107,6 +107,8 @@ long sourceTell(void *datasource) {
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateMetadata {
|
- (void)updateMetadata {
|
||||||
|
if([source seekable]) return;
|
||||||
|
|
||||||
const vorbis_comment *comment = ov_comment(&vorbisRef, -1);
|
const vorbis_comment *comment = ov_comment(&vorbisRef, -1);
|
||||||
|
|
||||||
if(comment) {
|
if(comment) {
|
||||||
|
@ -153,6 +155,8 @@ long sourceTell(void *datasource) {
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateIcyMetadata {
|
- (void)updateIcyMetadata {
|
||||||
|
if([source seekable]) return;
|
||||||
|
|
||||||
NSString *_genre = genre;
|
NSString *_genre = genre;
|
||||||
NSString *_album = album;
|
NSString *_album = album;
|
||||||
NSString *_artist = artist;
|
NSString *_artist = artist;
|
||||||
|
|
Loading…
Reference in New Issue