Commit 0e87f855 authored by Max Kellermann's avatar Max Kellermann

flac: enable the oggflac plugin with older libflac versions

Since decoder_list.c does not include the libflac headers, it cannot know whether to add the oggflac plugin to the decoder list. Solve this by always enabling the oggflac sub-plugin, even with older libflac versions. When the libflac API cannot support oggflac, disable the plugin at runtime by returning "false" from its init() method.
parent 505959f7
...@@ -385,14 +385,21 @@ flac_decode(struct decoder * decoder, struct input_stream *inStream) ...@@ -385,14 +385,21 @@ flac_decode(struct decoder * decoder, struct input_stream *inStream)
return flac_decode_internal(decoder, inStream, false); return flac_decode_internal(decoder, inStream, false);
} }
#ifndef HAVE_OGGFLAC
static bool static bool
oggflac_init(void) oggflac_init(void)
{ {
#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
return !!FLAC_API_SUPPORTS_OGG_FLAC; return !!FLAC_API_SUPPORTS_OGG_FLAC;
#else
/* disable oggflac when libflac is too old */
return false;
#endif
} }
#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7 && \ #if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
!defined(HAVE_OGGFLAC)
static struct tag *oggflac_tag_dup(const char *file) static struct tag *oggflac_tag_dup(const char *file)
{ {
struct tag *ret = NULL; struct tag *ret = NULL;
...@@ -443,17 +450,21 @@ static const char *const oggflac_mime_types[] = { ...@@ -443,17 +450,21 @@ static const char *const oggflac_mime_types[] = {
NULL NULL
}; };
#endif /* FLAC_API_VERSION_CURRENT >= 7 */
const struct decoder_plugin oggflacPlugin = { const struct decoder_plugin oggflacPlugin = {
.name = "oggflac", .name = "oggflac",
.init = oggflac_init, .init = oggflac_init,
#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
.try_decode = oggflac_try_decode, .try_decode = oggflac_try_decode,
.stream_decode = oggflac_decode, .stream_decode = oggflac_decode,
.tag_dup = oggflac_tag_dup, .tag_dup = oggflac_tag_dup,
.suffixes = oggflac_suffixes, .suffixes = oggflac_suffixes,
.mime_types = oggflac_mime_types .mime_types = oggflac_mime_types
#endif
}; };
#endif /* FLAC_API_VERSION_CURRENT >= 7 */ #endif /* HAVE_OGGFLAC */
static const char *const flacSuffixes[] = { "flac", NULL }; static const char *const flacSuffixes[] = { "flac", NULL };
static const char *const flac_mime_types[] = { static const char *const flac_mime_types[] = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment