Merge "res_pjsip/rtp: No joint capabilities between streams."
This commit is contained in:
commit
9241b11216
|
@ -930,10 +930,18 @@ static int handle_negotiated_sdp(struct ast_sip_session *session, const pjmedia_
|
|||
session_media = AST_VECTOR_GET(&session->pending_media_state->sessions, i);
|
||||
stream = ast_stream_topology_get_stream(session->pending_media_state->topology, i);
|
||||
|
||||
/* The stream state will have already been set to removed when either we
|
||||
* negotiate the incoming SDP stream or when we produce our own local SDP.
|
||||
* This can occur if an internal thing has requested it to be removed, or if
|
||||
* we remove it as a result of the stream limit being reached.
|
||||
/* Make sure that this stream is in the correct state. If we need to change
|
||||
* the state to REMOVED, then our work here is done, so go ahead and move on
|
||||
* to the next stream.
|
||||
*/
|
||||
if (!remote->media[i]->desc.port) {
|
||||
ast_stream_set_state(stream, AST_STREAM_STATE_REMOVED);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* If the stream state is REMOVED, nothing needs to be done, so move on to the
|
||||
* next stream. This can occur if an internal thing has requested it to be
|
||||
* removed, or if we remove it as a result of the stream limit being reached.
|
||||
*/
|
||||
if (ast_stream_get_state(stream) == AST_STREAM_STATE_REMOVED) {
|
||||
/*
|
||||
|
|
|
@ -5802,7 +5802,17 @@ static struct ast_frame *ast_rtcp_interpret(struct ast_rtp_instance *instance, s
|
|||
}
|
||||
|
||||
if (ssrc_valid && rtp->themssrc_valid) {
|
||||
if (ssrc != rtp->themssrc && use_packet_source) {
|
||||
/*
|
||||
* If the SSRC is 1, we still need to handle RTCP since this could be a
|
||||
* special case. For example, if we have a unidirectional video stream, the
|
||||
* SSRC may be set to 1 by the browser (in the case of chromium), and requests
|
||||
* will still need to be processed so that video can flow as expected. This
|
||||
* should only be done for PLI and FUR, since there is not a way to get the
|
||||
* appropriate rtp instance when the SSRC is 1.
|
||||
*/
|
||||
int exception = (ssrc == 1 && !((pt == RTCP_PT_PSFB && rc == AST_RTP_RTCP_FMT_PLI) || pt == RTCP_PT_FUR));
|
||||
if ((ssrc != rtp->themssrc && use_packet_source && ssrc != 1)
|
||||
|| exception) {
|
||||
/*
|
||||
* Skip over this RTCP record as it does not contain the
|
||||
* correct SSRC. We should not act upon RTCP records
|
||||
|
|
Loading…
Reference in New Issue