decoder: renamed plugin methods
Why have a "_func" prefix on all method names? Also don't typedef the methods, there is no advantage in that.
This commit is contained in:
parent
a7651b9d30
commit
21d3d300fd
@ -49,44 +49,49 @@ enum decoder_command {
|
|||||||
|
|
||||||
struct decoder;
|
struct decoder;
|
||||||
|
|
||||||
|
|
||||||
/* optional, set this to NULL if the InputPlugin doesn't have/need one
|
|
||||||
* this must return < 0 if there is an error and >= 0 otherwise */
|
|
||||||
typedef int (*decoder_init_func) (void);
|
|
||||||
|
|
||||||
/* optional, set this to NULL if the InputPlugin doesn't have/need one */
|
|
||||||
typedef void (*decoder_finish_func) (void);
|
|
||||||
|
|
||||||
/* boolean return value, returns 1 if the InputStream is decodable by
|
|
||||||
* the InputPlugin, 0 if not */
|
|
||||||
typedef unsigned int (*decoder_try_decode_func) (InputStream *);
|
|
||||||
|
|
||||||
/* this will be used to decode InputStreams, and is recommended for files
|
|
||||||
* and networked (HTTP) connections.
|
|
||||||
*
|
|
||||||
* returns -1 on error, 0 on success */
|
|
||||||
typedef int (*decoder_stream_decode_func) (struct decoder *, InputStream *);
|
|
||||||
|
|
||||||
/* use this if and only if your InputPlugin can only be passed a filename or
|
|
||||||
* handle as input, and will not allow callbacks to be set (like Ogg-Vorbis
|
|
||||||
* and FLAC libraries allow)
|
|
||||||
*
|
|
||||||
* returns -1 on error, 0 on success */
|
|
||||||
typedef int (*decoder_file_decode_func) (struct decoder *, char *path);
|
|
||||||
|
|
||||||
/* file should be the full path! Returns NULL if a tag cannot be found
|
|
||||||
* or read */
|
|
||||||
typedef struct tag *(*decoder_tag_dup_func) (char *file);
|
|
||||||
|
|
||||||
struct decoder_plugin {
|
struct decoder_plugin {
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
decoder_init_func init_func;
|
/**
|
||||||
decoder_finish_func finish_func;
|
* optional, set this to NULL if the InputPlugin doesn't
|
||||||
decoder_try_decode_func try_decode_func;
|
* have/need one this must return < 0 if there is an error and
|
||||||
decoder_stream_decode_func stream_decode_func;
|
* >= 0 otherwise
|
||||||
decoder_file_decode_func file_decode_func;
|
*/
|
||||||
decoder_tag_dup_func tag_dup_func;
|
int (*init)(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* optional, set this to NULL if the InputPlugin doesn't have/need one
|
||||||
|
*/
|
||||||
|
void (*finish)(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* boolean return value, returns 1 if the InputStream is
|
||||||
|
* decodable by the InputPlugin, 0 if not
|
||||||
|
*/
|
||||||
|
unsigned int (*try_decode)(InputStream *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this will be used to decode InputStreams, and is
|
||||||
|
* recommended for files and networked (HTTP) connections.
|
||||||
|
*
|
||||||
|
* returns -1 on error, 0 on success
|
||||||
|
*/
|
||||||
|
int (*stream_decode)(struct decoder *, InputStream *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* use this if and only if your InputPlugin can only be passed
|
||||||
|
* a filename or handle as input, and will not allow callbacks
|
||||||
|
* to be set (like Ogg-Vorbis and FLAC libraries allow)
|
||||||
|
*
|
||||||
|
* returns -1 on error, 0 on success
|
||||||
|
*/
|
||||||
|
int (*file_decode)(struct decoder *, char *path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* file should be the full path! Returns NULL if a tag cannot
|
||||||
|
* be found or read
|
||||||
|
*/
|
||||||
|
struct tag *(*tag_dup)(char *file);
|
||||||
|
|
||||||
/* one or more of the INPUT_PLUGIN_STREAM_* values OR'd together */
|
/* one or more of the INPUT_PLUGIN_STREAM_* values OR'd together */
|
||||||
unsigned char stream_types;
|
unsigned char stream_types;
|
||||||
|
@ -40,7 +40,7 @@ void decoder_plugin_load(struct decoder_plugin * inputPlugin)
|
|||||||
if (!inputPlugin->name)
|
if (!inputPlugin->name)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (inputPlugin->init_func && inputPlugin->init_func() < 0)
|
if (inputPlugin->init != NULL && inputPlugin->init() < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
insertInList(inputPlugin_list, inputPlugin->name, (void *)inputPlugin);
|
insertInList(inputPlugin_list, inputPlugin->name, (void *)inputPlugin);
|
||||||
@ -48,8 +48,8 @@ void decoder_plugin_load(struct decoder_plugin * inputPlugin)
|
|||||||
|
|
||||||
void decoder_plugin_unload(struct decoder_plugin * inputPlugin)
|
void decoder_plugin_unload(struct decoder_plugin * inputPlugin)
|
||||||
{
|
{
|
||||||
if (inputPlugin->finish_func)
|
if (inputPlugin->finish != NULL)
|
||||||
inputPlugin->finish_func();
|
inputPlugin->finish();
|
||||||
deleteFromList(inputPlugin_list, inputPlugin->name);
|
deleteFromList(inputPlugin_list, inputPlugin->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,14 +81,14 @@ static void decodeStart(void)
|
|||||||
|
|
||||||
/* first we try mime types: */
|
/* first we try mime types: */
|
||||||
while (ret && (plugin = decoder_plugin_from_mime_type(inStream.mime, next++))) {
|
while (ret && (plugin = decoder_plugin_from_mime_type(inStream.mime, next++))) {
|
||||||
if (!plugin->stream_decode_func)
|
if (plugin->stream_decode == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (!(plugin->stream_types & INPUT_PLUGIN_STREAM_URL))
|
if (!(plugin->stream_types & INPUT_PLUGIN_STREAM_URL))
|
||||||
continue;
|
continue;
|
||||||
if (plugin->try_decode_func
|
if (plugin->try_decode != NULL
|
||||||
&& !plugin->try_decode_func(&inStream))
|
&& !plugin->try_decode(&inStream))
|
||||||
continue;
|
continue;
|
||||||
ret = plugin->stream_decode_func(&decoder, &inStream);
|
ret = plugin->stream_decode(&decoder, &inStream);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,17 +97,17 @@ static void decodeStart(void)
|
|||||||
const char *s = getSuffix(path_max_utf8);
|
const char *s = getSuffix(path_max_utf8);
|
||||||
next = 0;
|
next = 0;
|
||||||
while (ret && (plugin = decoder_plugin_from_suffix(s, next++))) {
|
while (ret && (plugin = decoder_plugin_from_suffix(s, next++))) {
|
||||||
if (!plugin->stream_decode_func)
|
if (plugin->stream_decode == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (!(plugin->stream_types &
|
if (!(plugin->stream_types &
|
||||||
INPUT_PLUGIN_STREAM_URL))
|
INPUT_PLUGIN_STREAM_URL))
|
||||||
continue;
|
continue;
|
||||||
if (plugin->try_decode_func &&
|
if (plugin->try_decode != NULL &&
|
||||||
!plugin->try_decode_func(&inStream))
|
!plugin->try_decode(&inStream))
|
||||||
continue;
|
continue;
|
||||||
decoder.plugin = plugin;
|
decoder.plugin = plugin;
|
||||||
ret = plugin->stream_decode_func(&decoder,
|
ret = plugin->stream_decode(&decoder,
|
||||||
&inStream);
|
&inStream);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -119,8 +119,8 @@ static void decodeStart(void)
|
|||||||
* need to check for stream{Types,DecodeFunc} */
|
* need to check for stream{Types,DecodeFunc} */
|
||||||
if ((plugin = decoder_plugin_from_name("mp3"))) {
|
if ((plugin = decoder_plugin_from_name("mp3"))) {
|
||||||
decoder.plugin = plugin;
|
decoder.plugin = plugin;
|
||||||
ret = plugin->stream_decode_func(&decoder,
|
ret = plugin->stream_decode(&decoder,
|
||||||
&inStream);
|
&inStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -130,21 +130,21 @@ static void decodeStart(void)
|
|||||||
if (!plugin->stream_types & INPUT_PLUGIN_STREAM_FILE)
|
if (!plugin->stream_types & INPUT_PLUGIN_STREAM_FILE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (plugin->try_decode_func &&
|
if (plugin->try_decode != NULL &&
|
||||||
!plugin->try_decode_func(&inStream))
|
!plugin->try_decode(&inStream))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (plugin->file_decode_func) {
|
if (plugin->file_decode != NULL) {
|
||||||
closeInputStream(&inStream);
|
closeInputStream(&inStream);
|
||||||
close_instream = 0;
|
close_instream = 0;
|
||||||
decoder.plugin = plugin;
|
decoder.plugin = plugin;
|
||||||
ret = plugin->file_decode_func(&decoder,
|
ret = plugin->file_decode(&decoder,
|
||||||
path_max_fs);
|
path_max_fs);
|
||||||
break;
|
break;
|
||||||
} else if (plugin->stream_decode_func) {
|
} else if (plugin->stream_decode != NULL) {
|
||||||
decoder.plugin = plugin;
|
decoder.plugin = plugin;
|
||||||
ret = plugin->stream_decode_func(&decoder,
|
ret = plugin->stream_decode(&decoder,
|
||||||
&inStream);
|
&inStream);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -445,9 +445,9 @@ static int flac_plugin_init(void)
|
|||||||
DEBUG("libFLAC supports OggFLAC, initializing OggFLAC support\n");
|
DEBUG("libFLAC supports OggFLAC, initializing OggFLAC support\n");
|
||||||
assert(oggflacPlugin.name == NULL);
|
assert(oggflacPlugin.name == NULL);
|
||||||
oggflacPlugin.name = "oggflac";
|
oggflacPlugin.name = "oggflac";
|
||||||
oggflacPlugin.try_decode_func = oggflac_try_decode;
|
oggflacPlugin.try_decode = oggflac_try_decode;
|
||||||
oggflacPlugin.stream_decode_func = oggflac_decode;
|
oggflacPlugin.stream_decode = oggflac_decode;
|
||||||
oggflacPlugin.tag_dup_func = oggflac_tag_dup;
|
oggflacPlugin.tag_dup = oggflac_tag_dup;
|
||||||
oggflacPlugin.stream_types = INPUT_PLUGIN_STREAM_URL |
|
oggflacPlugin.stream_types = INPUT_PLUGIN_STREAM_URL |
|
||||||
INPUT_PLUGIN_STREAM_FILE;
|
INPUT_PLUGIN_STREAM_FILE;
|
||||||
oggflacPlugin.suffixes = oggflac_suffixes;
|
oggflacPlugin.suffixes = oggflac_suffixes;
|
||||||
|
@ -67,7 +67,7 @@ Song *newSong(const char *url, enum song_type type, Directory * parentDir)
|
|||||||
while (!song->tag && (plugin = isMusic(abs_path,
|
while (!song->tag && (plugin = isMusic(abs_path,
|
||||||
&(song->mtime),
|
&(song->mtime),
|
||||||
next++))) {
|
next++))) {
|
||||||
song->tag = plugin->tag_dup_func(abs_path);
|
song->tag = plugin->tag_dup(abs_path);
|
||||||
}
|
}
|
||||||
if (!song->tag || song->tag->time < 0) {
|
if (!song->tag || song->tag->time < 0) {
|
||||||
freeSong(song);
|
freeSong(song);
|
||||||
@ -111,7 +111,7 @@ int updateSongInfo(Song * song)
|
|||||||
while (!song->tag && (plugin = isMusic(abs_path,
|
while (!song->tag && (plugin = isMusic(abs_path,
|
||||||
&(song->mtime),
|
&(song->mtime),
|
||||||
next++))) {
|
next++))) {
|
||||||
song->tag = plugin->tag_dup_func(abs_path);
|
song->tag = plugin->tag_dup(abs_path);
|
||||||
}
|
}
|
||||||
if (!song->tag || song->tag->time < 0)
|
if (!song->tag || song->tag->time < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user