~ubuntu-branches/debian/stretch/sflphone/stretch

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.2.1/third_party/speex/libspeex/modes.h

  • Committer: Package Import Robot
  • Author(s): Francois Marier, Francois Marier, Mark Purcell
  • Date: 2014-10-18 15:08:50 UTC
  • mfrom: (1.1.12)
  • Revision ID: package-import@ubuntu.com-20141018150850-2exfk34ckb15pcwi
Tags: 1.4.1-0.1
[ Francois Marier ]
* Non-maintainer upload
* New upstream release (closes: #759576, #741130)
  - debian/rules +PJPROJECT_VERSION := 2.2.1
  - add upstream patch to fix broken TLS support
  - add patch to fix pjproject regression

[ Mark Purcell ]
* Build-Depends:
  - sflphone-daemon + libavformat-dev, libavcodec-dev, libswscale-dev,
  libavdevice-dev, libavutil-dev
  - sflphone-gnome + libclutter-gtk-1.0-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (C) 2002-2006 Jean-Marc Valin */
 
2
/**
 
3
   @file modes.h
 
4
   @brief Describes the different modes of the codec
 
5
*/
 
6
/*
 
7
   Redistribution and use in source and binary forms, with or without
 
8
   modification, are permitted provided that the following conditions
 
9
   are met:
 
10
   
 
11
   - Redistributions of source code must retain the above copyright
 
12
   notice, this list of conditions and the following disclaimer.
 
13
   
 
14
   - Redistributions in binary form must reproduce the above copyright
 
15
   notice, this list of conditions and the following disclaimer in the
 
16
   documentation and/or other materials provided with the distribution.
 
17
   
 
18
   - Neither the name of the Xiph.org Foundation nor the names of its
 
19
   contributors may be used to endorse or promote products derived from
 
20
   this software without specific prior written permission.
 
21
   
 
22
   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
23
   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
24
   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
25
   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
 
26
   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 
27
   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 
28
   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 
29
   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 
30
   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 
31
   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
32
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
33
 
 
34
*/
 
35
 
 
36
#ifndef MODES_H
 
37
#define MODES_H
 
38
 
 
39
#include <speex/speex.h>
 
40
#include <speex/speex_bits.h>
 
41
#include "arch.h"
 
42
 
 
43
#define NB_SUBMODES 16
 
44
#define NB_SUBMODE_BITS 4
 
45
 
 
46
#define SB_SUBMODES 8
 
47
#define SB_SUBMODE_BITS 3
 
48
 
 
49
/* Used internally, NOT TO BE USED in applications */
 
50
/** Used internally*/
 
51
#define SPEEX_GET_PI_GAIN 100
 
52
/** Used internally*/
 
53
#define SPEEX_GET_EXC     101
 
54
/** Used internally*/
 
55
#define SPEEX_GET_INNOV   102
 
56
/** Used internally*/
 
57
#define SPEEX_GET_DTX_STATUS   103
 
58
/** Used internally*/
 
59
#define SPEEX_SET_INNOVATION_SAVE   104
 
60
/** Used internally*/
 
61
#define SPEEX_SET_WIDEBAND   105
 
62
 
 
63
/** Used internally*/
 
64
#define SPEEX_GET_STACK   106
 
65
 
 
66
 
 
67
/** Quantizes LSPs */
 
68
typedef void (*lsp_quant_func)(spx_lsp_t *, spx_lsp_t *, int, SpeexBits *);
 
69
 
 
70
/** Decodes quantized LSPs */
 
71
typedef void (*lsp_unquant_func)(spx_lsp_t *, int, SpeexBits *);
 
72
 
 
73
 
 
74
/** Long-term predictor quantization */
 
75
typedef int (*ltp_quant_func)(spx_word16_t *, spx_word16_t *, spx_coef_t *, spx_coef_t *, 
 
76
                              spx_coef_t *, spx_sig_t *, const void *, int, int, spx_word16_t, 
 
77
                              int, int, SpeexBits*, char *, spx_word16_t *, spx_word16_t *, int, int, int, spx_word32_t *);
 
78
 
 
79
/** Long-term un-quantize */
 
80
typedef void (*ltp_unquant_func)(spx_word16_t *, spx_word32_t *, int, int, spx_word16_t, const void *, int, int *,
 
81
                                 spx_word16_t *, SpeexBits*, char*, int, int, spx_word16_t, int);
 
82
 
 
83
 
 
84
/** Innovation quantization function */
 
85
typedef void (*innovation_quant_func)(spx_word16_t *, spx_coef_t *, spx_coef_t *, spx_coef_t *, const void *, int, int, 
 
86
                                      spx_sig_t *, spx_word16_t *, SpeexBits *, char *, int, int);
 
87
 
 
88
/** Innovation unquantization function */
 
89
typedef void (*innovation_unquant_func)(spx_sig_t *, const void *, int, SpeexBits*, char *, spx_int32_t *);
 
90
 
 
91
/** Description of a Speex sub-mode (wither narrowband or wideband */
 
92
typedef struct SpeexSubmode {
 
93
   int     lbr_pitch;          /**< Set to -1 for "normal" modes, otherwise encode pitch using a global pitch and allowing a +- lbr_pitch variation (for low not-rates)*/
 
94
   int     forced_pitch_gain;  /**< Use the same (forced) pitch gain for all sub-frames */
 
95
   int     have_subframe_gain; /**< Number of bits to use as sub-frame innovation gain */
 
96
   int     double_codebook;    /**< Apply innovation quantization twice for higher quality (and higher bit-rate)*/
 
97
   /*LSP functions*/
 
98
   lsp_quant_func    lsp_quant; /**< LSP quantization function */
 
99
   lsp_unquant_func  lsp_unquant; /**< LSP unquantization function */
 
100
 
 
101
   /*Long-term predictor functions*/
 
102
   ltp_quant_func    ltp_quant; /**< Long-term predictor (pitch) quantizer */
 
103
   ltp_unquant_func  ltp_unquant; /**< Long-term predictor (pitch) un-quantizer */
 
104
   const void       *ltp_params; /**< Pitch parameters (options) */
 
105
 
 
106
   /*Quantization of innovation*/
 
107
   innovation_quant_func innovation_quant; /**< Innovation quantization */
 
108
   innovation_unquant_func innovation_unquant; /**< Innovation un-quantization */
 
109
   const void             *innovation_params; /**< Innovation quantization parameters*/
 
110
 
 
111
   spx_word16_t      comb_gain;  /**< Gain of enhancer comb filter */
 
112
 
 
113
   int               bits_per_frame; /**< Number of bits per frame after encoding*/
 
114
} SpeexSubmode;
 
115
 
 
116
/** Struct defining the encoding/decoding mode*/
 
117
typedef struct SpeexNBMode {
 
118
   int     frameSize;      /**< Size of frames used for encoding */
 
119
   int     subframeSize;   /**< Size of sub-frames used for encoding */
 
120
   int     lpcSize;        /**< Order of LPC filter */
 
121
   int     pitchStart;     /**< Smallest pitch value allowed */
 
122
   int     pitchEnd;       /**< Largest pitch value allowed */
 
123
 
 
124
   spx_word16_t gamma1;    /**< Perceptual filter parameter #1 */
 
125
   spx_word16_t gamma2;    /**< Perceptual filter parameter #2 */
 
126
   spx_word16_t   lpc_floor;      /**< Noise floor for LPC analysis */
 
127
 
 
128
   const SpeexSubmode *submodes[NB_SUBMODES]; /**< Sub-mode data for the mode */
 
129
   int     defaultSubmode; /**< Default sub-mode to use when encoding */
 
130
   int     quality_map[11]; /**< Mode corresponding to each quality setting */
 
131
} SpeexNBMode;
 
132
 
 
133
 
 
134
/** Struct defining the encoding/decoding mode for SB-CELP (wideband) */
 
135
typedef struct SpeexSBMode {
 
136
   const SpeexMode *nb_mode;    /**< Embedded narrowband mode */
 
137
   int     frameSize;     /**< Size of frames used for encoding */
 
138
   int     subframeSize;  /**< Size of sub-frames used for encoding */
 
139
   int     lpcSize;       /**< Order of LPC filter */
 
140
   spx_word16_t gamma1;   /**< Perceptual filter parameter #1 */
 
141
   spx_word16_t gamma2;   /**< Perceptual filter parameter #1 */
 
142
   spx_word16_t   lpc_floor;     /**< Noise floor for LPC analysis */
 
143
   spx_word16_t   folding_gain;
 
144
 
 
145
   const SpeexSubmode *submodes[SB_SUBMODES]; /**< Sub-mode data for the mode */
 
146
   int     defaultSubmode; /**< Default sub-mode to use when encoding */
 
147
   int     low_quality_map[11]; /**< Mode corresponding to each quality setting */
 
148
   int     quality_map[11]; /**< Mode corresponding to each quality setting */
 
149
#ifndef DISABLE_VBR
 
150
   const float (*vbr_thresh)[11];
 
151
#endif
 
152
   int     nb_modes;
 
153
} SpeexSBMode;
 
154
 
 
155
int speex_encode_native(void *state, spx_word16_t *in, SpeexBits *bits);
 
156
int speex_decode_native(void *state, SpeexBits *bits, spx_word16_t *out);
 
157
 
 
158
int nb_mode_query(const void *mode, int request, void *ptr);
 
159
int wb_mode_query(const void *mode, int request, void *ptr);
 
160
 
 
161
#endif