/usr/include/pjmedia-codec/ipp_codecs.h is in libpjproject-dev 2.1.0.0.ast20130823-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(.., ¶m);
...
// 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(.., ¶m);
\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(.., ¶m);
...
// 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(.., ¶m);
\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__ */
|