id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,backport_to_milestone,backported 2126,Implement RTCP Feedback,nanang,nanang,"This ticket is an initial implementation of [https://tools.ietf.org/html/rfc4585 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. 2. 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' */ ... } } } }}}",enhancement,closed,normal,release-2.8,pjmedia,trunk,fixed,,,,0