This file is indexed.

/usr/include/pjmedia-codec/ipp_codecs.h is in libpjproject-dev 2.7.2~dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
/* $Id: ipp_codecs.h 3553 2011-05-05 06:14:19Z nanang $ */
/* 
 * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 */
#ifndef __PJMEDIA_CODECS_IPP_H__
#define __PJMEDIA_CODECS_IPP_H__

/**
 * @file pjmedia-codec/ipp_codecs.h
 * @brief IPP codecs wrapper.
 */

#include <pjmedia-codec/types.h>

/**
 * @defgroup PJMED_IPP_CODEC IPP Codecs
 * @ingroup PJMEDIA_CODEC_CODECS
 * @brief Implementation of IPP codecs
 * @{
 *
 * This section describes functions to initialize and register IPP codec
 * factory to the codec manager. After the codec factory has been registered,
 * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
 *
 * This codec factory contains various codecs, i.e: G.729, G.723.1, G.726, 
 * G.728, G.722.1, AMR, and AMR-WB.
 *
 *
 * \section pjmedia_codec_ipp_g729 IPP G.729
 *
 * IPP G.729 is compliant with ITU-T G.729 and Annexes A, B, C, C+, D, 
 * E, I specifications. However, currently the pjmedia implementation is
 * using Annexes A and B only.
 *
 * IPP G.729 supports 16-bit PCM audio signal with sampling rate 8000Hz, 
 * frame length 10ms, and resulting in bitrate 8000bps (annexes D and E
 * introduce bitrates 6400bps and 11800bps).
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 * Note that G.729 VAD status should be signalled in SDP, see more
 * description below.
 *
 * \subsubsection annexb Annex B
 *
 * The capability of VAD/DTX is specified in Annex B.
 *
 * By default, Annex B is enabled. This default setting of Annex B can 
 * be modified using #pjmedia_codec_mgr_set_default_param().
 *
 * In #pjmedia_codec_param, Annex B is configured via VAD setting and
 * format parameter "annexb" in the SDP "a=fmtp" attribute in
 * decoding fmtp field. Valid values are "yes" and "no",
 * the implementation default is "yes". When this parameter is omitted
 * in the SDP, the value will be "yes" (RFC 4856 Section 2.1.9).
 *
 * Here is an example of modifying default setting of Annex B to
 * be disabled using #pjmedia_codec_mgr_set_default_param():
 \code
    pjmedia_codec_param param;

    pjmedia_codec_mgr_get_default_param(.., &param);
    ...
    // Set VAD
    param.setting.vad = 0;
    // Set SDP format parameter
    param.setting.dec_fmtp.cnt = 1;
    param.setting.dec_fmtp.param[0].name = pj_str("annexb");
    param.setting.dec_fmtp.param[0].val  = pj_str("no");
    ...
    pjmedia_codec_mgr_set_default_param(.., &param);
 \endcode
 *
 * \note
 * The difference of Annex B status in SDP offer/answer may be considered as 
 * incompatible codec in SDP negotiation.
 *
 * 
 * \section pjmedia_codec_ipp_g7231 IPP G.723.1
 *
 * IPP G.723.1 speech codec is compliant with ITU-T G.723.1 and Annex A
 * specifications.
 *
 * IPP G.723.1 supports 16-bit PCM audio signal with sampling rate 8000Hz, 
 * frame length 30ms, and resulting in bitrates 5300bps and 6300bps.
 *
 * By default, pjmedia implementation uses encoding bitrate of 6300bps.
 * The bitrate is signalled in-band in G.723.1 frames and interoperable.
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 *
 * \section pjmedia_codec_ipp_g726 IPP G.726
 *
 * IPP G.726 is compliant with ITU-T G.726 and G.726 Annex A specifications.
 *
 * IPP G.726 supports 16-bit PCM audio signal with sampling rate 8000Hz,
 * 10ms frame length and producing 16kbps, 24kbps, 32kbps, 48kbps bitrates.
 * The bitrate is specified explicitly in its encoding name, i.e: G726-16,
 * G726-24, G726-32, G726-48.
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 *
 * \section pjmedia_codec_ipp_g728 IPP G.728
 *
 * IPP G.728 is compliant with ITU-T G.728 with I, G, H Appendixes 
 * specifications for Low-Delay CELP coder.
 * 
 * IPP G.728 supports 16-bit PCM audio signal with sampling rate 8000Hz,
 * 20ms frame length and producing 9.6kbps, 12.8kbps, and 16kbps bitrates.
 *
 * The pjmedia implementation currently uses 16kbps bitrate only.
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 *
 * \section pjmedia_codec_ipp_g7221 IPP G.722.1
 *
 * The pjmedia implementation of IPP G.722.1 supports 16-bit PCM audio 
 * signal with sampling rate 16000Hz, 20ms frame length and producing 
 * 16kbps, 24kbps, and 32kbps bitrates.
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 * \subsubsection bitrate Bitrate
 *
 * The codec implementation supports only standard bitrates, i.e:
 * 24kbps and 32kbps. Both are enabled by default.
 *
 * \remark
 * There is a flaw in the codec manager as currently it could not 
 * differentiate G.722.1 codecs by bitrates, hence invoking 
 * #pjmedia_codec_mgr_set_default_param() may only affect a G.722.1 codec
 * with the highest priority (or first index found in codec enumeration 
 * when they have same priority) and invoking
 * #pjmedia_codec_mgr_set_codec_priority() will set priority of all G.722.1
 * codecs with sampling rate as specified.
 *
 *
 * \section pjmedia_codec_ipp_amr IPP AMR
 *
 * The IPP AMR is compliant with GSM06.90-94 specifications for GSM Adaptive
 * Multi-Rate codec.
 *
 * IPP AMR supports 16-bit PCM audio signal with sampling rate 8000Hz,
 * 20ms frame length and producing various bitrates that ranges from 4.75kbps
 * to 12.2kbps.
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 * \subsubsection bitrate Bitrate
 *
 * By default, encoding bitrate is 7400bps. This default setting can be 
 * modified using #pjmedia_codec_mgr_set_default_param() by specifying 
 * prefered AMR bitrate in field <tt>info::avg_bps</tt> of 
 * #pjmedia_codec_param. Valid bitrates could be seen in 
 * #pjmedia_codec_amrnb_bitrates.
 *
 * \subsubsection payload_format Payload Format
 *
 * There are two AMR payload format types, bandwidth-efficient and
 * octet-aligned. Default setting is using octet-aligned. This default payload
 * format can be modified using #pjmedia_codec_mgr_set_default_param().
 *
 * In #pjmedia_codec_param, payload format can be set by specifying SDP 
 * format parameters "octet-align" in the SDP "a=fmtp" attribute for 
 * decoding direction. Valid values are "0" (for bandwidth efficient mode)
 * and "1" (for octet-aligned mode).
 *
 * \subsubsection mode_set Mode-Set
 * 
 * Mode-set is used for restricting AMR modes in decoding direction.
 *
 * By default, no mode-set restriction applied. This default setting can be 
 * be modified using #pjmedia_codec_mgr_set_default_param().
 *
 * In #pjmedia_codec_param, mode-set could be specified via format parameters
 * "mode-set" in the SDP "a=fmtp" attribute for decoding direction. Valid 
 * value is a comma separated list of modes from the set 0 - 7, e.g: 
 * "4,5,6,7". When this parameter is omitted, no mode-set restrictions applied.
 *
 * Here is an example of modifying AMR default codec param:
 \code
    pjmedia_codec_param param;

    pjmedia_codec_mgr_get_default_param(.., &param);
    ...
    // set default encoding bitrate to the highest 12.2kbps
    param.info.avg_bps = 12200;

    // restrict decoding bitrate to 10.2kbps and 12.2kbps only
    param.setting.dec_fmtp.param[0].name = pj_str("mode-set");
    param.setting.dec_fmtp.param[0].val  = pj_str("6,7");

    // also set to use bandwidth-efficient payload format
    param.setting.dec_fmtp.param[1].name = pj_str("octet-align");
    param.setting.dec_fmtp.param[1].val  = pj_str("0");

    param.setting.dec_fmtp.cnt = 2;
    ...
    pjmedia_codec_mgr_set_default_param(.., &param);
 \endcode
 * 
 *
 * \section pjmedia_codec_ipp_amrwb IPP AMR-WB
 *
 * The IPP AMR-WB is compliant with 3GPP TS 26.190-192, 194, 201 
 * specifications for Adaptive Multi-Rate WideBand codec.
 *
 * IPP AMR-WB supports 16-bit PCM audio signal with sampling rate 16000Hz,
 * 20ms frame length and producing various bitrates. Valid bitrates could be
 * seen in #pjmedia_codec_amrwb_bitrates. The pjmedia implementation default
 * bitrate is 15850bps.
 *
 * \subsection codec_setting Codec Settings
 *
 * General codec settings for this codec such as VAD and PLC can be 
 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 
 * Please see the documentation of #pjmedia_codec_param for more info.
 *
 * \subsubsection bitrate Bitrate
 *
 * By default, encoding bitrate is 15850bps. This default setting can be 
 * modified using #pjmedia_codec_mgr_set_default_param() by specifying 
 * prefered AMR bitrate in field <tt>info::avg_bps</tt> of 
 * #pjmedia_codec_param.
 *
 * \subsubsection payload_format Payload Format
 *
 * There are two AMR payload format types, bandwidth-efficient and
 * octet-aligned. Default setting is using octet-aligned. This default payload
 * format can be modified using #pjmedia_codec_mgr_set_default_param().
 *
 * In #pjmedia_codec_param, payload format can be set by specifying SDP 
 * format parameters "octet-align" in the SDP "a=fmtp" attribute for 
 * decoding direction. Valid values are "0" (for bandwidth efficient mode)
 * and "1" (for octet-aligned mode).
 *
 * \subsubsection mode_set Mode-Set
 * 
 * Mode-set is used for restricting AMR modes in decoding direction.
 *
 * By default, no mode-set restriction applied. This default setting can be 
 * be modified using #pjmedia_codec_mgr_set_default_param().
 *
 * In #pjmedia_codec_param, mode-set could be specified via format parameters
 * "mode-set" in the SDP "a=fmtp" attribute for decoding direction. Valid 
 * value is a comma separated list of modes from the set 0 - 7, e.g: 
 * "4,5,6,7". When this parameter is omitted, no mode-set restrictions applied.
 */

PJ_BEGIN_DECL


/**
 * Initialize and register IPP codecs factory to pjmedia endpoint.
 *
 * @param endpt	    The pjmedia endpoint.
 *
 * @return	    PJ_SUCCESS on success.
 */
PJ_DECL(pj_status_t) pjmedia_codec_ipp_init( pjmedia_endpt *endpt );


/**
 * Unregister IPP codecs factory from pjmedia endpoint and deinitialize
 * the IPP codecs library.
 *
 * @return	    PJ_SUCCESS on success.
 */
PJ_DECL(pj_status_t) pjmedia_codec_ipp_deinit(void);


PJ_END_DECL


/**
 * @}
 */

#endif	/* __PJMEDIA_CODECS_IPP_H__ */