List of audio and video codecs supported by PJMEDIA-Codec.
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)
FFMPEG codecs (H.261, H.263, H.263P (H263-1998), H.264, MJPEG, VP8, VP9)
ITU G.711 codec is built-in and enabled by default in PJMEDIA (controlled by
Fast table vs compute-based implementation are available (controlled by
Code documentation: G.711
ITU G.722 wideband codec is built-in and enabled by default in PJMEDIA-Codec (controlled by
Code documentation: G.722
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
#define PJMEDIA_HAS_G7221_CODEC 1
Code documentation: G.722.1
GSM codec is built-in and enabled by default in PJMEDIA-Codec (controlled by
Code documentation: GSM FR
Software based ILBC codec is built-in and enabled by default in PJMEDIA-Codec (controlled by
Optimized implementation is available for Mac OS X and iOS. To enable it, declare this in your
#define PJMEDIA_ILBC_CODEC_USE_COREAUDIO 1
Code documentation: ILBC
Intel 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
#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
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.
$ 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
configurescript, either automatically or manually via
--with-openh264option. It may be forcefully disabled by defining
PJMEDIA_HAS_OPENH264_CODECto 0 in
More detailed instructions: see issue #1947
Code documentation: OpenH264
Opus is a totally open, royalty-free, highly versatile audio codec.
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
Speex codecs are shipped and enabled by default in PJMEDIA-Codec (controlled by
Supports narrowband, wideband, and ultra-wideband
Code documentation: Speex