- Timestamp:
- Jan 29, 2010 3:51:09 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/include/pjmedia-codec/passthrough.h
r2875 r3083 34 34 * @{ 35 35 * 36 * This section describes functions to registerand register passthrough36 * This section describes functions to initialize and register passthrough 37 37 * codecs factory to the codec manager. After the codec factory has been 38 38 * registered, application can use @ref PJMEDIA_CODEC API to manipulate 39 * the codec. This codec factory contains various codecs, e.g: G.729, iLBC, 40 * AMR, and G.711. 41 * 42 * Passthrough codecs are codecs wrapper that does not perform encoding 43 * or decoding, it just pack and parse encoded audio data from/into RTP 39 * the codec. 40 * 41 * Passthrough codecs are codecs wrapper that does NOT perform encoding 42 * or decoding, it just PACK and PARSE encoded audio data from/into RTP 44 43 * payload. This will accomodate pjmedia ports which work with encoded 45 44 * audio data, e.g: encoded audio files, sound device with capability 46 45 * of playing/recording encoded audio data. 46 * 47 * This codec factory contains various codecs, i.e: G.729, iLBC, 48 * AMR, and G.711. 49 * 50 * 51 * \section pjmedia_codec_passthrough_g729 Passthrough G.729 52 * 53 * G.729 supports 16-bit PCM audio signal with sampling rate 8000Hz, 54 * frame length 10ms, and resulting in bitrate 8000bps. 55 * 56 * \subsection codec_setting Codec Settings 57 * 58 * General codec settings for this codec such as VAD and PLC can be 59 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 60 * Please see the documentation of #pjmedia_codec_param for more info. 61 * 62 * Note that G.729 VAD status should be signalled in SDP, see more 63 * description below. 64 * 65 * \subsubsection annexb Annex B 66 * 67 * The capability of VAD/DTX is specified in Annex B. 68 * 69 * By default, Annex B is enabled. This default setting of Annex B can 70 * be modified using #pjmedia_codec_mgr_set_default_param(). 71 * 72 * In #pjmedia_codec_param, Annex B is configured via VAD setting and 73 * format parameter "annexb" in the SDP "a=fmtp" attribute in 74 * decoding fmtp field. Valid values are "yes" and "no", 75 * the implementation default is "yes". When this parameter is omitted 76 * in the SDP, the value will be "yes" (RFC 4856 Section 2.1.9). 77 * 78 * Here is an example of modifying default setting of Annex B to 79 * be disabled using #pjmedia_codec_mgr_set_default_param(): 80 \code 81 pjmedia_codec_param param; 82 83 pjmedia_codec_mgr_get_default_param(.., ¶m); 84 ... 85 // Set VAD 86 param.setting.vad = 0; 87 // Set SDP format parameter 88 param.setting.dec_fmtp.cnt = 1; 89 param.setting.dec_fmtp.param[0].name = pj_str("annexb"); 90 param.setting.dec_fmtp.param[0].val = pj_str("no"); 91 ... 92 pjmedia_codec_mgr_set_default_param(.., ¶m); 93 \endcode 94 * 95 * \note 96 * The difference of Annex B status in SDP offer/answer may be considered as 97 * incompatible codec in SDP negotiation. 98 * 99 * 100 * \section pjmedia_codec_passthrough_ilbc Passthrough iLBC 101 * 102 * The iLBC codec is developed by Global IP Solutions (GIPS), formerly 103 * Global IP Sound. The iLBC offers low bitrate and graceful audio quality 104 * degradation on frame losses. 105 * 106 * The iLBC codec supports 16-bit PCM audio signal with sampling rate of 107 * 8000Hz operating at two modes: 20ms and 30ms frame length modes, resulting 108 * in bitrates of 15.2kbps for 20ms mode and 13.33kbps for 30ms mode. 109 * 110 * \subsection codec_setting Codec Settings 111 * 112 * General codec settings for this codec such as VAD and PLC can be 113 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 114 * Please see the documentation of #pjmedia_codec_param for more info. 115 * 116 * \subsubsection mode Mode 117 * 118 * The default mode should be set upon initialization, see 119 * #pjmedia_codec_passthrough_init2(). After the codec is initialized, the 120 * default mode can be modified using #pjmedia_codec_mgr_set_default_param(). 121 * 122 * In #pjmedia_codec_param, iLBC mode can be set by specifying SDP 123 * format parameter "mode" in the SDP "a=fmtp" attribute for decoding 124 * direction. Valid values are "20" and "30" (for 20ms and 30ms mode 125 * respectively). 126 * 127 * Here is an example to set up #pjmedia_codec_param to use mode 20ms: 128 * \code 129 pjmedia_codec_param param; 130 ... 131 // setting iLBC mode in SDP 132 param.setting.dec_fmtp.cnt = 1; 133 param.setting.dec_fmtp.param[0].name = pj_str("mode"); 134 param.setting.dec_fmtp.param[0].val = pj_str("20"); 135 ... 136 \endcode 137 * 138 * 139 * \section pjmedia_codec_passthrough_amr Passthrough AMR 140 * 141 * IPP AMR supports 16-bit PCM audio signal with sampling rate 8000Hz, 142 * 20ms frame length and producing various bitrates that ranges from 4.75kbps 143 * to 12.2kbps. 144 * 145 * \subsection codec_setting Codec Settings 146 * 147 * General codec settings for this codec such as VAD and PLC can be 148 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 149 * Please see the documentation of #pjmedia_codec_param for more info. 150 * 151 * \subsubsection bitrate Bitrate 152 * 153 * By default, encoding bitrate is 7400bps. This default setting can be 154 * modified using #pjmedia_codec_mgr_set_default_param() by specifying 155 * prefered AMR bitrate in field <tt>info::avg_bps</tt> of 156 * #pjmedia_codec_param. Valid bitrates could be seen in 157 * #pjmedia_codec_amrnb_bitrates. 158 * 159 * \subsubsection payload_format Payload Format 160 * 161 * There are two AMR payload format types, bandwidth-efficient and 162 * octet-aligned. Default setting is using octet-aligned. This default payload 163 * format can be modified using #pjmedia_codec_mgr_set_default_param(). 164 * 165 * In #pjmedia_codec_param, payload format can be set by specifying SDP 166 * format parameters "octet-align" in the SDP "a=fmtp" attribute for 167 * decoding direction. Valid values are "0" (for bandwidth efficient mode) 168 * and "1" (for octet-aligned mode). 169 * 170 * \subsubsection mode_set Mode-Set 171 * 172 * Mode-set is used for restricting AMR modes in decoding direction. 173 * 174 * By default, no mode-set restriction applied. This default setting can be 175 * be modified using #pjmedia_codec_mgr_set_default_param(). 176 * 177 * In #pjmedia_codec_param, mode-set could be specified via format parameters 178 * "mode-set" in the SDP "a=fmtp" attribute for decoding direction. Valid 179 * value is a comma separated list of modes from the set 0 - 7, e.g: 180 * "4,5,6,7". When this parameter is omitted, no mode-set restrictions applied. 181 * 182 * Here is an example of modifying AMR default codec param: 183 \code 184 pjmedia_codec_param param; 185 186 pjmedia_codec_mgr_get_default_param(.., ¶m); 187 ... 188 // set default encoding bitrate to the highest 12.2kbps 189 param.info.avg_bps = 12200; 190 191 // restrict decoding bitrate to 10.2kbps and 12.2kbps only 192 param.setting.dec_fmtp.param[0].name = pj_str("mode-set"); 193 param.setting.dec_fmtp.param[0].val = pj_str("6,7"); 194 195 // also set to use bandwidth-efficient payload format 196 param.setting.dec_fmtp.param[1].name = pj_str("octet-align"); 197 param.setting.dec_fmtp.param[1].val = pj_str("0"); 198 199 param.setting.dec_fmtp.cnt = 2; 200 ... 201 pjmedia_codec_mgr_set_default_param(.., ¶m); 202 \endcode 203 * 204 * 205 * \section pjmedia_codec_passthrough_g711 Passthrough G.711 206 * 207 * The G.711 is an ultra low complexity codecs and in trade-off it results 208 * in high bitrate, i.e: 64kbps for 16-bit PCM with sampling rate 8000Hz. 209 * 210 * The factory contains two main compression algorithms, PCMU/u-Law and 211 * PCMA/A-Law. 212 * 213 * \subsection codec_setting Codec Settings 214 * 215 * General codec settings for this codec such as VAD and PLC can be 216 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param. 217 * Please see the documentation of #pjmedia_codec_param for more info. 47 218 */ 48 219 … … 79 250 * 80 251 * @param endpt The pjmedia endpoint. 81 * @param setting The settings , see @pjmedia_codec_passthrough_setting.252 * @param setting The settings. 82 253 * 83 254 * @return PJ_SUCCESS on success.
Note: See TracChangeset
for help on using the changeset viewer.