Blame include/shout/shout.h.in

Packit eed494
/*  shout.h
Packit eed494
 *
Packit eed494
 *  API for libshout, the streaming library for icecast
Packit eed494
 *
Packit eed494
 *  Copyright (C) 2002-2003 the Icecast team <team@icecast.org>
Packit eed494
 *
Packit eed494
 *  This library is free software; you can redistribute it and/or
Packit eed494
 *  modify it under the terms of the GNU Library General Public
Packit eed494
 *  License as published by the Free Software Foundation; either
Packit eed494
 *  version 2 of the License, or (at your option) any later version.
Packit eed494
 *
Packit eed494
 *  This library is distributed in the hope that it will be useful,
Packit eed494
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit eed494
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit eed494
 *  Library General Public License for more details.
Packit eed494
 *
Packit eed494
 *  You should have received a copy of the GNU Library General Public
Packit eed494
 *  License along with this library; if not, write to the Free
Packit eed494
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit eed494
 */
Packit eed494
#ifndef __LIBSHOUT_SHOUT_H__
Packit eed494
#define __LIBSHOUT_SHOUT_H__
Packit eed494
Packit eed494
#include <sys/types.h>
Packit eed494
#ifdef WIN32
Packit eed494
#include <os.h>
Packit eed494
#endif
Packit eed494
Packit eed494
#define SHOUTERR_SUCCESS	(0)
Packit eed494
#define SHOUTERR_INSANE		(-1)
Packit eed494
#define SHOUTERR_NOCONNECT	(-2)
Packit eed494
#define SHOUTERR_NOLOGIN	(-3)
Packit eed494
#define SHOUTERR_SOCKET		(-4)
Packit eed494
#define SHOUTERR_MALLOC		(-5)
Packit eed494
#define SHOUTERR_METADATA	(-6)
Packit eed494
#define SHOUTERR_CONNECTED	(-7)
Packit eed494
#define SHOUTERR_UNCONNECTED	(-8)
Packit eed494
#define SHOUTERR_UNSUPPORTED	(-9)
Packit eed494
Packit eed494
#define SHOUTERR_BUSY		(-10)
Packit eed494
Packit eed494
#define SHOUT_FORMAT_OGG	(0)
Packit eed494
#define SHOUT_FORMAT_MP3	(1)
Packit eed494
/* backward-compatibility alias */
Packit eed494
#define SHOUT_FORMAT_VORBIS	SHOUT_FORMAT_OGG
Packit eed494
Packit eed494
#define SHOUT_PROTOCOL_HTTP		(0)
Packit eed494
#define SHOUT_PROTOCOL_XAUDIOCAST	(1)
Packit eed494
#define SHOUT_PROTOCOL_ICY		(2)
Packit eed494
Packit eed494
#define SHOUT_AI_BITRATE	"bitrate"
Packit eed494
#define SHOUT_AI_SAMPLERATE	"samplerate"
Packit eed494
#define SHOUT_AI_CHANNELS	"channels"
Packit eed494
#define SHOUT_AI_QUALITY	"quality"
Packit eed494
Packit eed494
typedef struct shout shout_t;
Packit eed494
typedef struct _util_dict shout_metadata_t;
Packit eed494
Packit eed494
#ifdef __cplusplus
Packit eed494
extern "C" {
Packit eed494
#endif
Packit eed494
Packit eed494
/* initializes the shout library. Must be called before anything else */
Packit eed494
void shout_init(void);
Packit eed494
Packit eed494
/* shuts down the shout library, deallocating any global storage. Don't call
Packit eed494
 * anything afterwards */
Packit eed494
void shout_shutdown(void);
Packit eed494
Packit eed494
/* returns a static version string.  Non-null parameters will be set to the
Packit eed494
 * value of the library major, minor, and patch levels, respectively */
Packit eed494
const char *shout_version(int *major, int *minor, int *patch);
Packit eed494
Packit eed494
/* Allocates and sets up a new shout_t.  Returns NULL if it can't get enough
Packit eed494
 * memory.  The returns shout_t must be disposed of with shout_free. */
Packit eed494
shout_t *shout_new(void);
Packit eed494
Packit eed494
/* Free all memory allocated by a shout_t */
Packit eed494
void shout_free(shout_t *self);
Packit eed494
Packit eed494
/* Returns a statically allocated string describing the last shout error
Packit eed494
 * to occur.  Only valid until the next libshout call on this shout_t */
Packit eed494
const char *shout_get_error(shout_t *self);
Packit eed494
Packit eed494
/* Return the error code (e.g. SHOUTERR_SOCKET) for this shout instance */
Packit eed494
int shout_get_errno(shout_t *self);
Packit eed494
Packit eed494
/* returns SHOUTERR_CONNECTED or SHOUTERR_UNCONNECTED */
Packit eed494
int shout_get_connected(shout_t *self);
Packit eed494
Packit eed494
/* Parameter manipulation functions.  libshout makes copies of all parameters,
Packit eed494
 * the caller may free its copies after giving them to libshout.  May return
Packit eed494
 * SHOUTERR_MALLOC */
Packit eed494
Packit eed494
int shout_set_host(shout_t *self, const char *host);
Packit eed494
const char *shout_get_host(shout_t *self);
Packit eed494
Packit eed494
int shout_set_port(shout_t *self, unsigned short port);
Packit eed494
unsigned short shout_get_port(shout_t *self);
Packit eed494
Packit eed494
int shout_set_password(shout_t *, const char *password);
Packit eed494
const char *shout_get_password(shout_t *self);
Packit eed494
Packit eed494
int shout_set_mount(shout_t *self, const char *mount);
Packit eed494
const char *shout_get_mount(shout_t *self);
Packit eed494
Packit eed494
int shout_set_name(shout_t *self, const char *name);
Packit eed494
const char *shout_get_name(shout_t *self);
Packit eed494
Packit eed494
int shout_set_url(shout_t *self, const char *url);
Packit eed494
const char *shout_get_url(shout_t *self);
Packit eed494
Packit eed494
int shout_set_genre(shout_t *self, const char *genre);
Packit eed494
const char *shout_get_genre(shout_t *self);
Packit eed494
Packit eed494
int shout_set_user(shout_t *self, const char *username);
Packit eed494
const char *shout_get_user(shout_t *self);
Packit eed494
Packit eed494
int shout_set_agent(shout_t *self, const char *username);
Packit eed494
const char *shout_get_agent(shout_t *self);
Packit eed494
Packit eed494
int shout_set_description(shout_t *self, const char *description);
Packit eed494
const char *shout_get_description(shout_t *self);
Packit eed494
Packit eed494
int shout_set_dumpfile(shout_t *self, const char *dumpfile);
Packit eed494
const char *shout_get_dumpfile(shout_t *self);
Packit eed494
Packit eed494
int shout_set_audio_info(shout_t *self, const char *name, const char *value);
Packit eed494
const char *shout_get_audio_info(shout_t *self, const char *name);
Packit eed494
Packit eed494
int shout_set_public(shout_t *self, unsigned int make_public);
Packit eed494
unsigned int shout_get_public(shout_t *self);
Packit eed494
Packit eed494
/* takes a SHOUT_FORMAT_xxxx argument */
Packit eed494
int shout_set_format(shout_t *self, unsigned int format);
Packit eed494
unsigned int shout_get_format(shout_t *self);
Packit eed494
Packit eed494
/* takes a SHOUT_PROTOCOL_xxxxx argument */
Packit eed494
int shout_set_protocol(shout_t *self, unsigned int protocol);
Packit eed494
unsigned int shout_get_protocol(shout_t *self);
Packit eed494
Packit eed494
/* Instructs libshout to use nonblocking I/O. Must be called before
Packit eed494
 * shout_open (no switching back and forth midstream at the moment). */
Packit eed494
int shout_set_nonblocking(shout_t* self, unsigned int nonblocking);
Packit eed494
unsigned int shout_get_nonblocking(shout_t *self);
Packit eed494
Packit eed494
/* Opens a connection to the server.  All parameters must already be set */
Packit eed494
int shout_open(shout_t *self);
Packit eed494
Packit eed494
/* Closes a connection to the server */
Packit eed494
int shout_close(shout_t *self);
Packit eed494
Packit eed494
/* Send data to the server, parsing it for format specific timing info */
Packit eed494
int shout_send(shout_t *self, const unsigned char *data, size_t len);
Packit eed494
Packit eed494
/* Send unparsed data to the server.  Do not use this unless you know
Packit eed494
 * what you are doing. 
Packit eed494
 * Returns the number of bytes written, or < 0 on error.
Packit eed494
 */
Packit eed494
ssize_t shout_send_raw(shout_t *self, const unsigned char *data, size_t len);
Packit eed494
Packit eed494
/* return the number of bytes currently on the write queue (only makes sense in
Packit eed494
 * nonblocking mode). */
Packit eed494
ssize_t shout_queuelen(shout_t *self);
Packit eed494
  
Packit eed494
/* Puts caller to sleep until it is time to send more data to the server */
Packit eed494
void shout_sync(shout_t *self);
Packit eed494
Packit eed494
/* Amount of time in ms caller should wait before sending again */
Packit eed494
int shout_delay(shout_t *self);
Packit eed494
Packit eed494
/* Sets MP3 metadata.
Packit eed494
 * Returns:
Packit eed494
 *   SHOUTERR_SUCCESS
Packit eed494
 *   SHOUTERR_UNSUPPORTED if format isn't MP3
Packit eed494
 *   SHOUTERR_MALLOC
Packit eed494
 *   SHOUTERR_INSANE
Packit eed494
 *   SHOUTERR_NOCONNECT
Packit eed494
 *   SHOUTERR_SOCKET
Packit eed494
 */
Packit eed494
int shout_set_metadata(shout_t *self, shout_metadata_t *metadata);
Packit eed494
Packit eed494
/* Allocates a new metadata structure.  Must be freed by shout_metadata_free. */
Packit eed494
shout_metadata_t *shout_metadata_new(void);
Packit eed494
Packit eed494
/* Free resources allocated by shout_metadata_t */
Packit eed494
void shout_metadata_free(shout_metadata_t *self);
Packit eed494
Packit eed494
/* Add a parameter to the metadata structure.
Packit eed494
 * Returns:
Packit eed494
 *   SHOUTERR_SUCCESS on success
Packit eed494
 *   SHOUTERR_INSANE if self isn't a valid shout_metadata_t* or name is null
Packit eed494
 *   SHOUTERR_MALLOC if memory can't be allocated */
Packit eed494
int shout_metadata_add(shout_metadata_t *self, const char *name, const char *value);
Packit eed494
Packit eed494
#ifdef __cplusplus
Packit eed494
}
Packit eed494
#endif
Packit eed494
Packit eed494
/* --- Compiled features --- */
Packit eed494
Packit eed494
#define SHOUT_THREADSAFE @SHOUT_THREADSAFE@
Packit eed494
Packit eed494
#endif /* __LIBSHOUT_SHOUT_H__ */