/* * Audio Codecs: Adapted from ioq3 with changes. * For now, only handles streaming music, not sound effects. * * Copyright (C) 1999-2005 Id Software, Inc. * Copyright (C) 2005 Stuart Dalton * Copyright (C) 2010-2012 O.Sezer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef spingle__snd_codeci_h #define spingle__snd_codeci_h /* Codec internals */ typedef bool (*CODEC_INIT)(void); typedef void (*CODEC_SHUTDOWN)(void); typedef bool (*CODEC_OPEN)(snd_stream_t *stream); typedef int32_t (*CODEC_READ)(snd_stream_t *stream, int32_t bytes, void *buffer); typedef int32_t (*CODEC_REWIND)(snd_stream_t *stream); typedef void (*CODEC_CLOSE)(snd_stream_t *stream); struct snd_codec_s { uint32_t type; /* handled data type. (1U << n) */ bool initialized; /* init succeedded */ const char *ext; /* expected extension */ CODEC_INIT initialize; CODEC_SHUTDOWN shutdown; CODEC_OPEN codec_open; CODEC_READ codec_read; CODEC_REWIND codec_rewind; CODEC_CLOSE codec_close; }; bool S_CodecForwardStream(snd_stream_t *stream, uint32_t type); /* Forward a stream to another codec of 'type' type. */ #endif