PJMEDIA-Codec
List of audio and video codecs supported by PJMEDIA-Codec.
Audio Codecs
Android AMR-NB/WB (native)
Intel IPP codecs (G.722.1, G.723.1, G.726, G.728, G.729, AMR, and AMR-WB)
Video Codecs
Detail information:
Android H.264, VP8, VP9 (native)
Android AMediaCodec provides native AMR-NB and AMR-WB audio codecs and AVC (H264), VP8, VP9 video codecs for Android.
See #2552 for integration instructions
BCG729 (a G.729 compliant codec)
Available on Windows, Posix (Mac OS X, Linux), iOS, Android.
GPL license
Build instructions: https://github.com/pjsip/pjproject/issues/2029
Code documentation: BCG729
FFMPEG codecs (H.261, H.263, H.263P (H263-1998), H.264, MJPEG, VP8, VP9)
See also:
Code documentation: FFMPEG
VP8/VP9 support: https://github.com/pjsip/pjproject/pull/2863
G.711
ITU G.711 codec is built-in and enabled by default in PJMEDIA (controlled by
PJMEDIA_HAS_G711_CODEC
macro)Fast table vs compute-based implementation are available (controlled by
PJMEDIA_HAS_ALAW_ULAW_TABLE
macro)Code documentation: G.711
G.722
ITU G.722 wideband codec is built-in and enabled by default in PJMEDIA-Codec (controlled by
PJMEDIA_HAS_G722_CODEC
macro)Code documentation: G.722
G.722.1/C
ITU G.722.1 (a.k.a Siren7/Siren14 codecs) is shipped with PJPROJECT.
Beware of licensing requirement to use this codec. We have acquired a license from Polycom to distribute the codec with PJSIP, however you (the user of PJSIP software) MUST acquire the license from Poly (previously Polycom) yourself to use the codec and/or distribute software linked with the codec.
This codec is by default disabled, due to the licensing restriction above.
To enable it, declare in
config_site.h
:#define PJMEDIA_HAS_G7221_CODEC 1
Code documentation: G.722.1
GSM FR
GSM codec is built-in and enabled by default in PJMEDIA-Codec (controlled by
PJMEDIA_HAS_GSM_CODEC
macro)Code documentation: GSM FR
ILBC
Software based ILBC codec is built-in and enabled by default in PJMEDIA-Codec (controlled by
PJMEDIA_HAS_ILBC_CODEC
macro)Optimized implementation is available for Mac OS X and iOS. To enable it, declare this in your
config_site.h
:#define PJMEDIA_ILBC_CODEC_USE_COREAUDIO 1
Code documentation: ILBC
Intel IPP codecs
Installation: Intel IPP codecs integration
Code documentation: IPP Codecs
Linear/PCM 8/16bit mono/stereo
These are family of L8/L16 codecs shipped with PJMEDIA. It supports stereo codec.
By default they are disabled because we’re running out of static RTP payload types.
To enable it, set the codec(s) you desire to use to 1 in
config_site.h
:#define PJMEDIA_CODEC_L16_HAS_8KHZ_MONO 1 #define PJMEDIA_CODEC_L16_HAS_8KHZ_STEREO 1 #define PJMEDIA_CODEC_L16_HAS_16KHZ_MONO 1 #define PJMEDIA_CODEC_L16_HAS_16KHZ_STEREO 1 #define PJMEDIA_CODEC_L16_HAS_48KHZ_MONO 1 #define PJMEDIA_CODEC_L16_HAS_48KHZ_STEREO 1
Code documentation: PCM/Linear 16bit
OpenCore AMR NB/WB
Installation: OpenCore AMR codecs integration
Code documentation: OpenCore AMR NB/WB
OpenH264
Provides video codec H.264, alternatively you can use ffmpeg (together with libx264).
Supports Windows, Posix (Mac OS X, Linux), iOS, Android.
You may install from the binaries packages if they are available for your platform.
Debian/Ubuntu:
$ sudo apt-get install libopenh264-dev
See https://www.openh264.org/ for installation instructions for other platforms.
OpenH264 may be detected and enabled by the
configure
script, either automatically or manually via--with-openh264
option. It may be forcefully disabled by definingPJMEDIA_HAS_OPENH264_CODEC
to 0 inconfig_site.h
More detailed instructions: see issue #1947
Code documentation: OpenH264
Opus
Opus is a totally open, royalty-free, highly versatile audio codec.
Passthrough codecs
Passthrough codecs are not actual codecs, rather they just PACK and PARSE encoded audio data from/into RTP payload. They are used to accommodate ports that work with encoded audio data, e.g: encoded audio files, and sound device with codec support, to let the frames pass through PJMEDIA without being encoded and decoded.
Supports AMR, G.729, ILBC, PCMU, PCMA.
Code documentation: Passthrough
SILK
Supports Windows, Posix (Mac OS X, Linux), iOS, Android.
Build instructions: https://github.com/pjsip/pjproject/issues/1586
Code documentation: SILK
Speex
Speex codecs are shipped and enabled by default in PJMEDIA-Codec (controlled by
PJMEDIA_HAS_SPEEX_CODEC
macro)Supports narrowband, wideband, and ultra-wideband
Code documentation: Speex
VP8 and VP9 (libvpx)
On Debian/Ubuntu it is provided by libvpx-dev: package:
$ sudo apt-get install libvpx-dev
See webm website for installation instructions for other platforms.
Build instructions: #2253
Code documentation: VP8 and VP9