Sigrid Solveig Haflínudóttirplan 9 port82ccfd15 years agoHistory
123 lines · 5.7 KB · C
RawDownload
/*************************************************************************//*                                                                       *//*                  Language Technologies Institute                      *//*                     Carnegie Mellon University                        *//*                        Copyright (c) 2000                             *//*                        All Rights Reserved.                           *//*                                                                       *//*  Permission is hereby granted, free of charge, to use and distribute  *//*  this software and its documentation without restriction, including   *//*  without limitation the rights to use, copy, modify, merge, publish,  *//*  distribute, sublicense, and/or sell copies of this work, and to      *//*  permit persons to whom this work is furnished to do so, subject to   *//*  the following conditions:                                            *//*   1. The code must retain the above copyright notice, this list of    *//*      conditions and the following disclaimer.                         *//*   2. Any modifications must be clearly marked as such.                *//*   3. Original authors' names are not deleted.                         *//*   4. The authors' names are not used to endorse or promote products   *//*      derived from this software without specific prior written        *//*      permission.                                                      *//*                                                                       *//*  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         *//*  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      *//*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   *//*  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      *//*  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    *//*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   *//*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          *//*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       *//*  THIS SOFTWARE.                                                       *//*                                                                       *//*************************************************************************//*             Author:  Alan W Black (awb@cs.cmu.edu)                    *//*               Date:  August 2000                                      *//*************************************************************************//*                                                                       *//*  Audio                                                                *//*                                                                       *//*************************************************************************/#ifndef _CST_AUDIO_H__#define _CST_AUDIO_H__ #include "cst_wave.h"#include "cst_hrg.h" #ifdef CST_AUDIO_WIN32#define CST_AUDIOBUFFSIZE 8092#else#define CST_AUDIOBUFFSIZE 128#endif #define CST_AUDIO_DEFAULT_PORT 1746#define CST_AUDIO_DEFAULT_SERVER "localhost"#define CST_AUDIO_DEFAULT_ENCODING "short" typedef enum {    CST_AUDIO_LINEAR16 = 0,    CST_AUDIO_LINEAR8,    CST_AUDIO_MULAW} cst_audiofmt;/* Returns the number of bytes per sample for a given audio format */int audio_bps(cst_audiofmt fmt); typedef struct cst_audiodev_struct {    int sps, real_sps;    int channels, real_channels;    cst_audiofmt fmt, real_fmt;    int byteswap;    cst_rateconv *rateconv;    void *platform_data;} cst_audiodev; /* Generic audio functions */cst_audiodev *audio_open(int sps, int channels, cst_audiofmt fmt);int audio_close(cst_audiodev *ad);int audio_write(cst_audiodev *ad, void *buff, int num_bytes);int audio_flush(cst_audiodev *ad); /* wait for buffers to empty */int audio_drain(cst_audiodev *ad); /* empty buffers now */ /* Generic high level audio functions */int play_wave(cst_wave *w);int play_wave_sync(cst_wave *w, cst_relation *rel,                   int (*call_back)(cst_item *));int play_wave_client(cst_wave *w, const char *servername, int port,                     const char *encoding);int auserver(int port); /* Play wave to specified device */int play_wave_device(cst_wave *w, cst_audiodev *ad); /* Output to a file as if its an audio device */cst_audiodev *audio_open_file(int sps, int channels, cst_audiofmt fmt,			      const char *filename);int audio_close_file(cst_audiodev *ad);int audio_write_file(cst_audiodev *ad, void *buff, int num_bytes);int audio_drain_file(cst_audiodev *ad);int audio_flush_file(cst_audiodev *ad); /* For audio streaming */#define CST_AUDIO_STREAM_STOP -1#define CST_AUDIO_STREAM_CONT 0typedef struct cst_audio_streaming_info_struct{    int min_buffsize;    int (*asc)(const cst_wave *w,int start,int size,                int last, struct cst_audio_streaming_info_struct *asi);     const cst_utterance *utt; /* in case you need more information */    const cst_item *item;     /* because you'll probably want this */                              /* But this is *not* updated automatically */    void *userdata;} cst_audio_streaming_info;cst_audio_streaming_info *new_audio_streaming_info(void);void delete_audio_streaming_info(cst_audio_streaming_info *asi);CST_VAL_USER_TYPE_DCLS(audio_streaming_info,cst_audio_streaming_info)typedef int (*cst_audio_stream_callback)(const cst_wave *w,int start,int size,                                       int last, cst_audio_streaming_info *asi); /* An example audio streaming callback function src/audio/au_streaming.c */int audio_stream_chunk(const cst_wave *w, int start, int size,                        int last, cst_audio_streaming_info *asi); #endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t