.. comment: This file is shared by both the Features (Datasheet) page and PJMEDIA API reference page. Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PJMEDIA was designed to be applicable in broad range of systems, from desktop to mobile, embedded, and maybe even DSP. These are the core considerations for such design: - any clockrates - N-channels support - zero thread capable Audio Features ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Some audio processing algorithms implemented in PJMEDIA. - :doc:`Accoustic Echo Cancellation ` - :doc:`Adaptive Delay Buffer ` - :doc:`Adaptive Jitter Buffer ` - :doc:`Adaptive Silence Detection ` - :doc:`Circular Buffer ` - :doc:`Codec Framework ` - :doc:`Conference Bridge ` - :doc:`Format converter ` - :doc:`Mono/Stereo/Multichannel Converter ` - :doc:`Packet Lost Concealment (PLC) ` - :doc:`Resampling Algorithm ` - :doc:`Tone/DTMF Generator ` - :doc:`WAV file playback `, :doc:`playlist `, and :doc:`recorder ` - :doc:`Waveform Similarity Based Overlap-Add (WSOLA) ` - `WebRTC AEC3 support `_ Video Features ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. include:: /common/common_video_features.rst Transports ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Media transport is responsible for packing/unpacking media frames to/from the network, as well as getting involved in negotiation of suitable transport in SDP. Media transports can also be chained in a pipeline (for example, SRTP+ICE). - :doc:`Media Transport API ` - :any:`SRTP - Secure RTP (SDES and DTLS) ` - :doc:`ICE - Interactive Connectivity Establishment ` - :doc:`UDP ` - :doc:`Loopback ` - :doc:`Sample Transport Adapter ` Media transports implemented by community: - ZRTP: https://github.com/wernerd/ZRTP4PJ Media components (Ports) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ :doc:`Port ` is PJMEDIA component for processing media frames. Media ports can be linked in a pipeline to process audio/video frames end-to-end from audio device to the network/transport. - :doc:`Conference Bridge ` - :doc:`Bidirectional Port ` - :doc:`Echo Cancellation Port ` - :doc:`Buffer Playback ` - :doc:`Capture to Buffer ` - :doc:`Null Port ` - :doc:`Resampling Port ` - :doc:`Multi-frequency/DTMF Tone Generator ` - :doc:`Audio Stream ` - :doc:`Video Stream ` - :doc:`WAV File Playback ` - :doc:`WAV Playlist ` - :doc:`WAV File Recorder ` - :doc:`Media channel splitter/combiner ` Clock provider ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Because PJMEDIA has no thread, a "clock" must be provided to make the media frames flow inside the media pipeline in a timely manner. - :doc:`Introduction to clock concept ` - :doc:`Master Port ` - :doc:`Sound Device Port ` - :doc:`Sound Device (Deprecated) ` - :doc:`Video media port ` - :doc:`Clock Generator ` Codec Framework ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Codec Registration ` - :doc:`Codec constants ` - :doc:`Audio Codec Framework ` - :doc:`Video Codec Framework ` .. note:: For list of supported codecs, see :doc:`Supported codecs `. SDP ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`SDP Parsing and Data Structure ` - :doc:`SDP Negotiation State Machine (Offer/Answer Model) ` (:rfc:`3264`) - `SDP SSRC attribute `__ (:rfc:`5576`) - `RTP and RTCP multiplexing `_ (:rfc:`5761`) RTP and RTCP ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`RTP Session and Encapsulation ` (:rfc:`3350`) - :doc:`RTCP Session and Encapsulation ` (:rfc:`3350`) - `RTP and RTCP multiplexing `_ (:rfc:`5761`) - :doc:`RTCP Feedback mechanism ` - :doc:`RTCP XR ` (:rfc:`3611`) - `SSRC synchronization via SDP `__ (:rfc:`5576`) - `RTCP CNAME guideline `__ (:rfc:`7022`) Compile Time Settings ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`PJMEDIA ` - :doc:`Audio device ` - :doc:`Video Device ` Basic Types and Functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Basic Types ` - :doc:`Error Codes ` - :doc:`Object Signatures ` Endpoint ^^^^^^^^^^^^^^^^^^^^^^^^^^^ The endpoint is a singleton runtime "manager" for PJMEDIA framework. - :doc:`Media Endpoint ` Formats ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`RIFF/WAVE ` - :doc:`AVI ` - :doc:`Media format framework ` - :doc:`Format Converter ` Media Flow ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Media Frame ` - :doc:`Media Session ` - :doc:`Media Port Framework ` Events ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Event Framework `