Mercurial > hg > audiostuff
comparison spandsp-0.0.6pre17/src/spandsp/silence_gen.h @ 4:26cd8f1ef0b1
import spandsp-0.0.6pre17
| author | Peter Meerwald <pmeerw@cosy.sbg.ac.at> |
|---|---|
| date | Fri, 25 Jun 2010 15:50:58 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 3:c6c5a16ce2f2 | 4:26cd8f1ef0b1 |
|---|---|
| 1 /* | |
| 2 * SpanDSP - a series of DSP components for telephony | |
| 3 * | |
| 4 * silence_gen.c - A silence generator, for inserting timed silences. | |
| 5 * | |
| 6 * Written by Steve Underwood <steveu@coppice.org> | |
| 7 * | |
| 8 * Copyright (C) 2006 Steve Underwood | |
| 9 * | |
| 10 * All rights reserved. | |
| 11 * | |
| 12 * This program is free software; you can redistribute it and/or modify | |
| 13 * it under the terms of the GNU Lesser General Public License version 2.1, | |
| 14 * as published by the Free Software Foundation. | |
| 15 * | |
| 16 * This program is distributed in the hope that it will be useful, | |
| 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 * GNU Lesser General Public License for more details. | |
| 20 * | |
| 21 * You should have received a copy of the GNU Lesser General Public | |
| 22 * License along with this program; if not, write to the Free Software | |
| 23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
| 24 * | |
| 25 * $Id: silence_gen.h,v 1.19 2009/09/04 14:38:47 steveu Exp $ | |
| 26 */ | |
| 27 | |
| 28 #if !defined(_SPANDSP_SILENCE_GEN_H_) | |
| 29 #define _SPANDSP_SILENCE_GEN_H_ | |
| 30 | |
| 31 typedef struct silence_gen_state_s silence_gen_state_t; | |
| 32 | |
| 33 #if defined(__cplusplus) | |
| 34 extern "C" | |
| 35 { | |
| 36 #endif | |
| 37 | |
| 38 /*! Generate a block of silent audio samples. | |
| 39 \brief Generate a block of silent audio samples. | |
| 40 \param s The silence generator context. | |
| 41 \param amp The audio sample buffer. | |
| 42 \param max_len The number of samples to be generated. | |
| 43 \return The number of samples actually generated. This will be zero when | |
| 44 there is nothing to send. | |
| 45 */ | |
| 46 SPAN_DECLARE_NONSTD(int) silence_gen(silence_gen_state_t *s, int16_t *amp, int max_len); | |
| 47 | |
| 48 /*! Set a silence generator context to output continuous silence. | |
| 49 \brief Set a silence generator context to output continuous silence. | |
| 50 \param s The silence generator context. | |
| 51 */ | |
| 52 SPAN_DECLARE(void) silence_gen_always(silence_gen_state_t *s); | |
| 53 | |
| 54 /*! Set a silence generator context to output a specified period of silence. | |
| 55 \brief Set a silence generator context to output a specified period of silence. | |
| 56 \param s The silence generator context. | |
| 57 \param silent_samples The number of samples to be generated. | |
| 58 */ | |
| 59 SPAN_DECLARE(void) silence_gen_set(silence_gen_state_t *s, int silent_samples); | |
| 60 | |
| 61 /*! Alter the period of a silence generator context by a specified amount. | |
| 62 \brief Alter the period of a silence generator context by a specified amount. | |
| 63 \param s The silence generator context. | |
| 64 \param silent_samples The number of samples to change the setting by. A positive number | |
| 65 increases the duration. A negative number reduces it. The duration | |
| 66 is prevented from going negative. | |
| 67 */ | |
| 68 SPAN_DECLARE(void) silence_gen_alter(silence_gen_state_t *s, int silent_samples); | |
| 69 | |
| 70 /*! Find how long a silence generator context has to run. | |
| 71 \brief Find how long a silence generator context has to run. | |
| 72 \param s The silence generator context. | |
| 73 \return The number of samples remaining. | |
| 74 */ | |
| 75 SPAN_DECLARE(int) silence_gen_remainder(silence_gen_state_t *s); | |
| 76 | |
| 77 /*! Find the total silence generated to date by a silence generator context. | |
| 78 \brief Find the total silence generated to date. | |
| 79 \param s The silence generator context. | |
| 80 \return The number of samples generated. | |
| 81 */ | |
| 82 SPAN_DECLARE(int) silence_gen_generated(silence_gen_state_t *s); | |
| 83 | |
| 84 /*! Change the status reporting function associated with a silence generator context. | |
| 85 \brief Change the status reporting function associated with a silence generator context. | |
| 86 \param s The silence generator context. | |
| 87 \param handler The callback routine used to report status changes. | |
| 88 \param user_data An opaque pointer. */ | |
| 89 SPAN_DECLARE(void) silence_gen_status_handler(silence_gen_state_t *s, modem_tx_status_func_t handler, void *user_data); | |
| 90 | |
| 91 /*! Initialise a timed silence generator context. | |
| 92 \brief Initialise a timed silence generator context. | |
| 93 \param s The silence generator context. | |
| 94 \param silent_samples The initial number of samples to set the silence to. | |
| 95 \return A pointer to the silence generator context. | |
| 96 */ | |
| 97 SPAN_DECLARE(silence_gen_state_t *) silence_gen_init(silence_gen_state_t *s, int silent_samples); | |
| 98 | |
| 99 SPAN_DECLARE(int) silence_gen_release(silence_gen_state_t *s); | |
| 100 | |
| 101 SPAN_DECLARE(int) silence_gen_free(silence_gen_state_t *s); | |
| 102 | |
| 103 /* The following dummy routines, to absorb data, don't really have a proper home, | |
| 104 so they have been put here. */ | |
| 105 | |
| 106 /*! A dummy routine to use as a receive callback, when we aren't really | |
| 107 trying to process what is received. It just absorbs and ignores the | |
| 108 data. | |
| 109 \brief Dummy receive callback. | |
| 110 \param user_data The context. | |
| 111 \param amp The signal.buffer | |
| 112 \param len The length of the signal buffer | |
| 113 \return 0. | |
| 114 */ | |
| 115 SPAN_DECLARE_NONSTD(int) span_dummy_rx(void *user_data, const int16_t amp[], int len); | |
| 116 | |
| 117 /*! A dummy routine to use as a signal modifier callback, when we aren't | |
| 118 really trying to process the signal. It just returns without affecting | |
| 119 anything. | |
| 120 \brief Dummy signal modifier callback. | |
| 121 \param user_data The context. | |
| 122 \param amp The signal.buffer | |
| 123 \param len The length of the signal buffer | |
| 124 \return 0. | |
| 125 */ | |
| 126 SPAN_DECLARE(int) span_dummy_mod(void *user_data, int16_t amp[], int len); | |
| 127 | |
| 128 /*! A dummy routine to use as a receive fillin callback, when we aren't really | |
| 129 trying to process what is received. It just absorbs and ignores the | |
| 130 request. | |
| 131 \brief Dummy receive fillin callback. | |
| 132 \param user_data The context. | |
| 133 \param len The length of the signal buffer | |
| 134 \return 0. | |
| 135 */ | |
| 136 SPAN_DECLARE_NONSTD(int) span_dummy_rx_fillin(void *user_data, int len); | |
| 137 | |
| 138 #if defined(__cplusplus) | |
| 139 } | |
| 140 #endif | |
| 141 | |
| 142 #endif | |
| 143 /*- End of file ------------------------------------------------------------*/ |
