/** * @file adin_netaudio.c * * * @brief ネットワーク入力:NetAudio/DatLink サーバからの音声入力 * * 入力ソースとして,DatLink に附属の NetAudio サーバを使用する * 低レベル関数です.これを用いることで DatLink の入力を * 直接認識することができます. * NetAudio がインストールしてあるホストで configure することで * コンパイルされます. * * 関数の実体は adin_na.c で定義されています. * * * @brief Audio input from NetAudio/DatLink server * * Low level I/O functions for audio input via the NetAudio server. * NetAudio is a part of DatLink product, and this feature enables * direct live input recognition via DatLink. This file will be * compiled if NetAudio headers and libraries are located on the machine. * * The actual procedure are defined in adin_na.c. * * * @author Akinobu LEE * @date Sun Feb 13 19:50:55 2005 * * $Revision: 1.6 $ * */ /* * Copyright (c) 1991-2012 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology * All rights reserved */ /* Tested with DAT deck, DatLink hardware and NetAudio library on Solaris2.5.1 */ /* because of `boolean' type conflict in sentlib and datlink includes, */ /* there are only wrappers. The core functions are defined in adin_na.c */ #include #include static char server_devname[MAXPATHLEN]; ///< Device name /** * Connection initialization: check connectivity and open for recording. * * @param sfreq [in] required sampling frequency * @param arg [in] server device name string to connect * * @return TRUE on success, FALSE on failure. */ boolean adin_netaudio_standby(int sfreq, void *arg) { strncpy(server_devname, arg, MAXPATHLEN); if (NA_standby(sfreq, server_devname) == 0) return(FALSE); /* error */ return(TRUE); } /** * Start recording. * * @param pathname [in] path name to open or NULL for default * * @return TRUE on success, FALSE on failure. */ boolean adin_netaudio_begin(char *pathname) { NA_start(); return(TRUE); } /** * Stop recording. * * @return TRUE on success, FALSE on failure. */ boolean adin_netaudio_end() { NA_stop(); return(TRUE); } /** * @brief Read samples from the daemon. * * Try to read @a sampnum samples and returns actual number of recorded * samples currently available. This function will block until * at least one sample can be obtained. * * @param buf [out] samples obtained in this function * @param sampnum [in] wanted number of samples to be read * * @return actural number of read samples, -2 if an error occured. */ int adin_netaudio_read(SP16 *buf, int sampnum) { int cnt; cnt = NA_read(buf, sampnum); if (cnt < 0) { jlog("Error: adin_na: failed to read sample\n"); return(-2); /* return negative on error */ } return(cnt); } /** * * Function to return current input source device name * * @return string of current input device name. * */ char * adin_netaudio_input_name() { return(server_devname); }