Ticket #2126 (closed enhancement: fixed)

Opened 2 months ago

Last modified 8 weeks ago

Implement RTCP Feedback

Reported by: nanang Owned by: nanang
Priority: normal Milestone: release-2.8
Component: pjmedia Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no

Description (last modified by nanang) (diff)

This ticket is an initial implementation of RFC 4585:

  1. PJMEDIA
    • Interworking and coexistence of AVP & AVPF: modify SDP negotiation, transport proto checks in media transports, stream info, etc
    • Implement RTCP-FB packets (generic NACK, NACK-PLI, SLI, RPSI) generation APIs.
    • RTCP-FB support in SDP (https://tools.ietf.org/html/rfc4585#section-4).
    • Parse RTCP-FB info from SDP and add the info into pjmedia_stream_info for RTCP-FB operational in the stream.
    • Implement RTCP-FB functionality in audio stream, only generic NACK will be implemented.
  1. PJSUA/PJSUA2
    • Add RTCP-FB setting structure into account config.

Monitoring RTCP-FB event in application

Application can monitor RTCP Feedback events by implementing PJSUA callback on_call_media_event or PJSUA2 callback Call::onCallMediaEvent(). Sample code for PJSUA:

static void on_call_media_event(pjsua_call_id call_id,
                                unsigned med_idx,
                                pjmedia_event *event)
{
  if (event->type == PJMEDIA_EVENT_RX_RTCP_FB) {
    /* Incoming RTCP-FB event */
    pjmedia_event_rx_rtcp_fb_data *fb_data = (pjmedia_event_rx_rtcp_fb_data*)
                                             event.data.ptr;
    if (fb_data->cap.type == PJMEDIA_RTCP_FB_NACK && fb_data->cap.param.slen == 0)
    {
      /* Generic NACK */
      /* NACK message can be accessed via 'fb_data->msg.nack' */
      ...
    }
  }
}

Change History

comment:1 Changed 2 months ago by nanang

  • Status changed from new to closed
  • Resolution set to fixed

In 5820:

Close #2126: Initial implementation of RTCP Feedback.

comment:2 Changed 2 months ago by nanang

In 5825:

Re #2126: Implemented incoming RTCP-FB handling, i.e: parse and notify application via PJMEDIA event framework.

comment:3 Changed 2 months ago by nanang

  • Description modified (diff)

comment:4 Changed 2 months ago by nanang

In 5827:

Re #2126: Added rtcp_fb.c to Makefile and fixed compile warnings on gcc.

comment:5 Changed 2 months ago by riza

In 5832:

Re #2126: Add rtcp_fb.h and rtcp_fb.c to pjmedia project file for VS2015.

comment:6 Changed 8 weeks ago by ming

In 5837:

Re #2126: Fixed missing conversion of rtcpFbConfig from and to pjsua account config

comment:7 Changed 8 weeks ago by ming

In 5841:

Re #2126: re: r5825, create pjmedia_event_mgr when initializing audio subsystem.

comment:8 Changed 8 weeks ago by ming

In r5842:

Re #2126: re r5841: move the event manager creation and destruction in pjsua_media instead

comment:9 Changed 8 weeks ago by ming

In 5843:

Re #2126: Create thread when creating the event manager, which is required for video. Also add more doc about this in pjmedia_event_mgr.

Note: See TracTickets for help on using tickets.