moved InputPlugin to decoder_api.h
InputPlugin is the API which is implemented by a decoder plugin. This belongs to the public API/ABI, so move it to decoder_api.h. It will later be renamed to something like "decoder_plugin".
This commit is contained in:
parent
4a87f1e815
commit
08bdb43bef
@ -26,9 +26,67 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "inputPlugin.h"
|
|
||||||
#include "inputStream.h"
|
#include "inputStream.h"
|
||||||
#include "replayGain.h"
|
#include "replayGain.h"
|
||||||
|
#include "tag.h"
|
||||||
|
#include "playerData.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* valid values for streamTypes in the InputPlugin struct: */
|
||||||
|
#define INPUT_PLUGIN_STREAM_FILE 0x01
|
||||||
|
#define INPUT_PLUGIN_STREAM_URL 0x02
|
||||||
|
|
||||||
|
|
||||||
|
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 (*InputPlugin_initFunc) (void);
|
||||||
|
|
||||||
|
/* optional, set this to NULL if the InputPlugin doesn't have/need one */
|
||||||
|
typedef void (*InputPlugin_finishFunc) (void);
|
||||||
|
|
||||||
|
/* boolean return value, returns 1 if the InputStream is decodable by
|
||||||
|
* the InputPlugin, 0 if not */
|
||||||
|
typedef unsigned int (*InputPlugin_tryDecodeFunc) (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 (*InputPlugin_streamDecodeFunc) (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 (*InputPlugin_fileDecodeFunc) (struct decoder *,
|
||||||
|
char *path);
|
||||||
|
|
||||||
|
/* file should be the full path! Returns NULL if a tag cannot be found
|
||||||
|
* or read */
|
||||||
|
typedef MpdTag *(*InputPlugin_tagDupFunc) (char *file);
|
||||||
|
|
||||||
|
typedef struct _InputPlugin {
|
||||||
|
const char *name;
|
||||||
|
InputPlugin_initFunc initFunc;
|
||||||
|
InputPlugin_finishFunc finishFunc;
|
||||||
|
InputPlugin_tryDecodeFunc tryDecodeFunc;
|
||||||
|
InputPlugin_streamDecodeFunc streamDecodeFunc;
|
||||||
|
InputPlugin_fileDecodeFunc fileDecodeFunc;
|
||||||
|
InputPlugin_tagDupFunc tagDupFunc;
|
||||||
|
|
||||||
|
/* one or more of the INPUT_PLUGIN_STREAM_* values OR'd together */
|
||||||
|
unsigned char streamTypes;
|
||||||
|
|
||||||
|
/* last element in these arrays must always be a NULL: */
|
||||||
|
const char *const*suffixes;
|
||||||
|
const char *const*mimeTypes;
|
||||||
|
} InputPlugin;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opaque handle which the decoder plugin passes to the functions in
|
* Opaque handle which the decoder plugin passes to the functions in
|
||||||
@ -36,6 +94,7 @@
|
|||||||
*/
|
*/
|
||||||
struct decoder;
|
struct decoder;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify the player thread that it has finished initialization and
|
* Notify the player thread that it has finished initialization and
|
||||||
* that it has read the song's meta data.
|
* that it has read the song's meta data.
|
||||||
|
@ -19,62 +19,7 @@
|
|||||||
#ifndef INPUT_PLUGIN_H
|
#ifndef INPUT_PLUGIN_H
|
||||||
#define INPUT_PLUGIN_H
|
#define INPUT_PLUGIN_H
|
||||||
|
|
||||||
#include "inputStream.h"
|
#include "decoder_api.h"
|
||||||
#include "outputBuffer.h"
|
|
||||||
#include "playerData.h"
|
|
||||||
|
|
||||||
/* valid values for streamTypes in the InputPlugin struct: */
|
|
||||||
#define INPUT_PLUGIN_STREAM_FILE 0x01
|
|
||||||
#define INPUT_PLUGIN_STREAM_URL 0x02
|
|
||||||
|
|
||||||
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 (*InputPlugin_initFunc) (void);
|
|
||||||
|
|
||||||
/* optional, set this to NULL if the InputPlugin doesn't have/need one */
|
|
||||||
typedef void (*InputPlugin_finishFunc) (void);
|
|
||||||
|
|
||||||
/* boolean return value, returns 1 if the InputStream is decodable by
|
|
||||||
* the InputPlugin, 0 if not */
|
|
||||||
typedef unsigned int (*InputPlugin_tryDecodeFunc) (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 (*InputPlugin_streamDecodeFunc) (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 (*InputPlugin_fileDecodeFunc) (struct decoder *,
|
|
||||||
char *path);
|
|
||||||
|
|
||||||
/* file should be the full path! Returns NULL if a tag cannot be found
|
|
||||||
* or read */
|
|
||||||
typedef MpdTag *(*InputPlugin_tagDupFunc) (char *file);
|
|
||||||
|
|
||||||
typedef struct _InputPlugin {
|
|
||||||
const char *name;
|
|
||||||
InputPlugin_initFunc initFunc;
|
|
||||||
InputPlugin_finishFunc finishFunc;
|
|
||||||
InputPlugin_tryDecodeFunc tryDecodeFunc;
|
|
||||||
InputPlugin_streamDecodeFunc streamDecodeFunc;
|
|
||||||
InputPlugin_fileDecodeFunc fileDecodeFunc;
|
|
||||||
InputPlugin_tagDupFunc tagDupFunc;
|
|
||||||
|
|
||||||
/* one or more of the INPUT_PLUGIN_STREAM_* values OR'd together */
|
|
||||||
unsigned char streamTypes;
|
|
||||||
|
|
||||||
/* last element in these arrays must always be a NULL: */
|
|
||||||
const char *const*suffixes;
|
|
||||||
const char *const*mimeTypes;
|
|
||||||
} InputPlugin;
|
|
||||||
|
|
||||||
/* individual functions to load/unload plugins */
|
/* individual functions to load/unload plugins */
|
||||||
void loadInputPlugin(InputPlugin * inputPlugin);
|
void loadInputPlugin(InputPlugin * inputPlugin);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../inputPlugin.h"
|
#include "../decoder_api.h"
|
||||||
|
|
||||||
#if defined(HAVE_FLAC) || defined(HAVE_OGGFLAC)
|
#if defined(HAVE_FLAC) || defined(HAVE_OGGFLAC)
|
||||||
|
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../inputPlugin.h"
|
|
||||||
|
|
||||||
#include "_flac_common.h"
|
#include "_flac_common.h"
|
||||||
#include "_ogg_common.h"
|
#include "_ogg_common.h"
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#ifndef _OGG_COMMON_H
|
#ifndef _OGG_COMMON_H
|
||||||
#define _OGG_COMMON_H
|
#define _OGG_COMMON_H
|
||||||
|
|
||||||
#include "../inputPlugin.h"
|
#include "../decoder_api.h"
|
||||||
|
|
||||||
#if defined(HAVE_OGGFLAC) || defined(HAVE_OGGVORBIS) || \
|
#if defined(HAVE_OGGFLAC) || defined(HAVE_OGGVORBIS) || \
|
||||||
(defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7)
|
(defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7)
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "../utils.h"
|
#include "../utils.h"
|
||||||
#include "../log.h"
|
#include "../log.h"
|
||||||
|
#include "../inputPlugin.h"
|
||||||
|
|
||||||
/* this code was based on flac123, from flac-tools */
|
/* this code was based on flac123, from flac-tools */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user