⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 our_sdl_audio.h

📁 完整的RTP RTSP代码库
💻 H
字号:
/*    SDL - Simple DirectMedia Layer    Copyright (C) 1997-2004 Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library 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    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Sam Lantinga    slouken@libsdl.org*/#ifdef SAVE_RCSIDstatic char rcsid = "@(#) $Id: Our_SDL_audio.h,v 1.5 2004/12/03 23:33:38 wmaycisco Exp $";#endif/* Access to the raw audio mixing buffer for the SDL library */#ifndef _OURSDL_audio_h#define _OURSDL_audio_h#include <SDL.h>#include <SDL_thread.h>#include <begin_code.h>/* Set up for C function definitions, even when using C++ */#ifdef __cplusplusextern "C" {#endif/* Function prototypes *//* These functions are used internally, and should not be used unless you * have a specific need to specify the audio driver you want to use. * You should normally use SDL_Init() or SDL_InitSubSystem(). */extern DECLSPEC int SDLCALL Our_SDL_AudioInit(const char *driver_name);extern DECLSPEC void SDLCALL Our_SDL_AudioQuit(void);/* This function fills the given character buffer with the name of the * current audio driver, and returns a pointer to it if the audio driver has * been initialized.  It returns NULL if no driver has been initialized. */extern DECLSPEC char * SDLCALL Our_SDL_AudioDriverName(char *namebuf, int maxlen);/* * This function opens the audio device with the desired parameters, and * returns 0 if successful, placing the actual hardware parameters in the * structure pointed to by 'obtained'.  If 'obtained' is NULL, the audio * data passed to the callback function will be guaranteed to be in the * requested format, and will be automatically converted to the hardware * audio format if necessary.  This function returns -1 if it failed  * to open the audio device, or couldn't set up the audio thread. * * When filling in the desired audio spec structure, *  'desired->freq' should be the desired audio frequency in samples-per-second. *  'desired->format' should be the desired audio format. *  'desired->samples' is the desired size of the audio buffer, in samples. *     This number should be a power of two, and may be adjusted by the audio *     driver to a value more suitable for the hardware.  Good values seem to *     range between 512 and 8096 inclusive, depending on the application and *     CPU speed.  Smaller values yield faster response time, but can lead *     to underflow if the application is doing heavy processing and cannot *     fill the audio buffer in time.  A stereo sample consists of both right *     and left channels in LR ordering. *     Note that the number of samples is directly related to time by the *     following formula:  ms = (samples*1000)/freq *  'desired->size' is the size in bytes of the audio buffer, and is *     calculated by SDL_OpenAudio(). *  'desired->silence' is the value used to set the buffer to silence, *     and is calculated by SDL_OpenAudio(). *  'desired->callback' should be set to a function that will be called *     when the audio device is ready for more data.  It is passed a pointer *     to the audio buffer, and the length in bytes of the audio buffer. *     This function usually runs in a separate thread, and so you should *     protect data structures that it accesses by calling SDL_LockAudio() *     and SDL_UnlockAudio() in your code. *  'desired->userdata' is passed as the first parameter to your callback *     function. * * The audio device starts out playing silence when it's opened, and should * be enabled for playing by calling SDL_PauseAudio(0) when you are ready * for your audio callback function to be called.  Since the audio driver * may modify the requested size of the audio buffer, you should allocate * any local mixing buffers after you open the audio device. */#define AUDIO_FORMAT_HW_AC3 0xfefeextern DECLSPEC int SDLCALL Our_SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained);/* * Get the current audio state: */extern DECLSPEC SDL_audiostatus SDLCALL Our_SDL_GetAudioStatus(void);/* * This function pauses and unpauses the audio callback processing. * It should be called with a parameter of 0 after opening the audio * device to start playing sound.  This is so you can safely initialize * data for your callback function after opening the audio device. * Silence will be written to the audio device during the pause. */extern DECLSPEC void SDLCALL Our_SDL_PauseAudio(int pause_on);/* * This function takes a source format and rate and a destination format * and rate, and initializes the 'cvt' structure with information needed * by SDL_ConvertAudio() to convert a buffer of audio data from one format * to the other. * This function returns 0, or -1 if there was an error. */extern DECLSPEC int SDLCALL Our_SDL_BuildAudioCVT(SDL_AudioCVT *cvt,		Uint16 src_format, Uint8 src_channels, int src_rate,		Uint16 dst_format, Uint8 dst_channels, int dst_rate);/* Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(), * created an audio buffer cvt->buf, and filled it with cvt->len bytes of * audio data in the source format, this function will convert it in-place * to the desired format. * The data conversion may expand the size of the audio data, so the buffer * cvt->buf should be allocated after the cvt structure is initialized by * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long. */extern DECLSPEC int SDLCALL Our_SDL_ConvertAudio(SDL_AudioCVT *cvt);/* * This takes two audio buffers of the playing audio format and mixes * them, performing addition, volume adjustment, and overflow clipping. * The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME * for full audio volume.  Note this does not change hardware volume. * This is provided for convenience -- you can mix your own audio data. */#define SDL_MIX_MAXVOLUME 128extern DECLSPEC void SDLCALL Our_SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume);/* * The lock manipulated by these functions protects the callback function. * During a LockAudio/UnlockAudio pair, you can be guaranteed that the * callback function is not running.  Do not call these from the callback * function or you will cause deadlock. */extern DECLSPEC void SDLCALL Our_SDL_LockAudio(void);extern DECLSPEC void SDLCALL Our_SDL_UnlockAudio(void);/* * This function shuts down audio processing and closes the audio device. */extern DECLSPEC void SDLCALL Our_SDL_CloseAudio(void);/* * Determine if we have the ability to detect the audio buffer delay */extern DECLSPEC int Our_SDL_HasAudioDelay(void);/* * Determine the audio buffer delay in samples */extern DECLSPEC int Our_SDL_AudioDelay(void);/* Ends C function definitions when using C++ */#ifdef __cplusplus}#endif#include <close_code.h>#endif /* _SDL_audio_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -