blob: 494899f18dccb518d07998a3565e0fdfcf988a44 [file] [log] [blame]
Benny Prijonoc5859882006-07-31 15:25:14 +00001/* $Id$ */
2/*
Benny Prijono844653c2008-12-23 17:27:53 +00003 * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
4 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
Benny Prijonoc5859882006-07-31 15:25:14 +00005 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#ifndef __PJMEDIA_CODEC_ILBC_H__
21#define __PJMEDIA_CODEC_ILBC_H__
22
23/**
24 * @file pjmedia-codec/ilbc.h
25 * @brief iLBC codec.
26 */
27
28#include <pjmedia-codec/types.h>
29
30/**
31 * @defgroup PJMED_ILBC iLBC Codec
Benny Prijono2e8cf632009-08-13 15:57:26 +000032 * @ingroup PJMEDIA_CODEC_CODECS
Benny Prijonoc5859882006-07-31 15:25:14 +000033 * @brief Implementation of iLBC Codec
34 * @{
Benny Prijono5b64b8d2008-06-20 21:39:02 +000035 *
Nanang Izzuddinc5a17592010-01-29 15:51:09 +000036 * This section describes functions to initialize and register iLBC codec
Benny Prijonoc5859882006-07-31 15:25:14 +000037 * factory to the codec manager. After the codec factory has been registered,
38 * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
Nanang Izzuddinc5a17592010-01-29 15:51:09 +000039 *
40 * The iLBC codec is developed by Global IP Solutions (GIPS), formerly
41 * Global IP Sound. The iLBC offers low bitrate and graceful audio quality
42 * degradation on frame losses.
43 *
44 * The iLBC codec supports 16-bit PCM audio signal with sampling rate of
45 * 8000Hz operating at two modes: 20ms and 30ms frame length modes, resulting
46 * in bitrates of 15.2kbps for 20ms mode and 13.33kbps for 30ms mode.
47 *
48 *
49 * \section codec_setting Codec Settings
50 *
51 * \subsection general_setting General Settings
52 *
53 * General codec settings for this codec such as VAD and PLC can be
54 * manipulated through the <tt>setting</tt> field in #pjmedia_codec_param.
55 * Please see the documentation of #pjmedia_codec_param for more info.
56 *
57 * \subsection specific_setting Codec Specific Settings
58 *
59 * The following settings are applicable for this codec.
60 *
61 * \subsubsection mode Mode
62 *
63 * The default mode should be set upon initialization, see
64 * #pjmedia_codec_ilbc_init(). After the codec is initialized, the default
65 * mode can be modified using #pjmedia_codec_mgr_set_default_param().
66 *
67 * In #pjmedia_codec_param, iLBC mode can be set by specifying SDP
68 * format parameter "mode" in the SDP "a=fmtp" attribute for decoding
69 * direction. Valid values are "20" and "30" (for 20ms and 30ms mode
70 * respectively).
71 *
72 * Here is an example to set up #pjmedia_codec_param to use mode 20ms:
73 * \code
74 pjmedia_codec_param param;
75 ...
76 // setting iLBC mode in SDP
77 param.setting.dec_fmtp.cnt = 1;
78 param.setting.dec_fmtp.param[0].name = pj_str("mode");
79 param.setting.dec_fmtp.param[0].val = pj_str("20");
80 ...
81 \endcode
Benny Prijonoc5859882006-07-31 15:25:14 +000082 */
83
84PJ_BEGIN_DECL
85
86
87/**
88 * Initialize and register iLBC codec factory to pjmedia endpoint.
89 *
90 * @param endpt The pjmedia endpoint.
91 * @param mode Default decoder mode to be used. Valid values are
92 * 20 and 30 ms. Note that encoder mode follows the
93 * setting advertised in the remote's SDP.
94 *
95 * @return PJ_SUCCESS on success.
96 */
97PJ_DECL(pj_status_t) pjmedia_codec_ilbc_init( pjmedia_endpt *endpt,
98 int mode );
99
100
101
102/**
103 * Unregister iLBC codec factory from pjmedia endpoint and deinitialize
104 * the iLBC codec library.
105 *
106 * @return PJ_SUCCESS on success.
107 */
108PJ_DECL(pj_status_t) pjmedia_codec_ilbc_deinit(void);
109
110
111PJ_END_DECL
112
113
114/**
115 * @}
116 */
117
118#endif /* __PJMEDIA_CODEC_ILBC_H__ */
119