Version 9 (modified by nanang, 12 years ago) (diff)


General changes in 2.0

Media Format

Containing all information needed to completely describe a media.

  • Changed: pjmedia_format — it is now virtually able to describe any media types (in 1.x it was containing extended info for audio format). Here are the core contents:
    • Format ID — Specifies the audio sample or video pixel format. Enumeration of some well known formats IDs is defined in pjmedia_format_id.
    • Media type — The top-most type of the media, as an information.
    • Format detail — Detail section to describe the media. As the details are different among media types, this field is declared as union and pjmedia_format_detail_type is introduced to recognize the content. Currently there are two predefined structures:
  • New: Video format helper:
    • pjmedia_video_format_info — Information to describe a raw video format, such as RGB/YUV color model, number of bits per pixel, planar/packed data representation, and pointer to function to get real-time information of a raw video format (such as buffer size needed for a picture, byte size of a picture line, pointer and buffer size of each plane).
    • pjmedia_video_apply_fmt_param — Information to apply a raw video format against size and buffer information, and get additional information from it. To do that, application fills up the input fields of this structure, and give this structure to apply_fmt() function of pjmedia_video_format_info structure.

Check the media format documentation here for details.

New video components in PJMEDIA

See also PJMEDIA documentation.

PJSUA API changes

See also PJSUA-LIB documentation.

Missing samples_per_frame

  • Removed: samples_per_frame, which was used in many PJMEDIA components and functions. Generally, application can now use PJMEDIA_AFD_SAMPLES_PER_FRAME(audio-format-detail) to get the same result.

Port info

  • Changed: All fields in the port info that desribe the media format have been removed and replaced by pjmedia_format. Check the port info documentation here for details.

put_frame() callback of pjmedia_port

  • Changed: Removed const qualifier from the frame argument, this is to accomodate in-place media processing by PJMEDIA port.
  • Sample warnings in building application after upgrading from 1.x to 2.0:
    ../src/pjmedia/bidirectional.c: In function ‘put_frame’:
    ../src/pjmedia/bidirectional.c:39: warning: passing argument 2 of ‘pjmedia_port_put_frame’ discards qualifiers from pointer target type
    ../include/pjmedia/port.h:334: note: expected ‘struct pjmedia_frame *’ but argument is of type ‘const struct pjmedia_frame *’
    ../src/pjmedia/bidirectional.c:70: warning: assignment from incompatible pointer type

Missing pjmedia_session

  • Removed: pjmedia_session. Now media streams must be managed directly by application.

PJSUA SRTP optional mode with duplicated media

  • Deprecated: pjsua_acc_config::srtp_optional_dup_offer and pjsua_config::srtp_optional_dup_offer, these settings have been deprecated and will be ignored (if it is set).

PJSUA media transport

  • Removed: pjsua_media_transports_create and pjsua_media_transports_attach, due to dynamic media transport creation (see #539).


  • Changed: As now call can have multiple media streams, e.g: M audio streams and N video streams, pjsua_call_info also has array of media info. Check the call info documentation here for details.

See also Release Notes for 2.0