mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-05 20:55:26 +00:00
Merge "res_rtp_asterisk: enable rtcp & QOS stats on native bridge" into 13
This commit is contained in:
@@ -4855,9 +4855,6 @@ static int bridge_p2p_rtp_write(struct ast_rtp_instance *instance,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtp->rxcount++;
|
|
||||||
rtp->rxoctetcount += (len - hdrlen);
|
|
||||||
|
|
||||||
/* If the payload coming in is not one of the negotiated ones then send it to the core, this will cause formats to change and the bridge to break */
|
/* If the payload coming in is not one of the negotiated ones then send it to the core, this will cause formats to change and the bridge to break */
|
||||||
if (ast_rtp_codecs_find_payload_code(ast_rtp_instance_get_codecs(instance1), bridged_payload) == -1) {
|
if (ast_rtp_codecs_find_payload_code(ast_rtp_instance_get_codecs(instance1), bridged_payload) == -1) {
|
||||||
ast_debug(1, "Unsupported payload type received \n");
|
ast_debug(1, "Unsupported payload type received \n");
|
||||||
@@ -5110,13 +5107,6 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we are directly bridged to another instance send the audio directly out */
|
|
||||||
instance1 = ast_rtp_instance_get_bridged(instance);
|
|
||||||
if (instance1
|
|
||||||
&& !bridge_p2p_rtp_write(instance, instance1, rtpheader, res, hdrlen)) {
|
|
||||||
return &ast_null_frame;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If the version is not what we expected by this point then just drop the packet */
|
/* If the version is not what we expected by this point then just drop the packet */
|
||||||
if (version != 2) {
|
if (version != 2) {
|
||||||
return &ast_null_frame;
|
return &ast_null_frame;
|
||||||
@@ -5221,6 +5211,28 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc
|
|||||||
rtp->themssrc = ntohl(rtpheader[2]); /* Record their SSRC to put in future RR */
|
rtp->themssrc = ntohl(rtpheader[2]); /* Record their SSRC to put in future RR */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* If we are directly bridged to another instance send the audio directly out,
|
||||||
|
* but only after updating core information about the received traffic so that
|
||||||
|
* outgoing RTCP reflects it.
|
||||||
|
*/
|
||||||
|
instance1 = ast_rtp_instance_get_bridged(instance);
|
||||||
|
if (instance1
|
||||||
|
&& !bridge_p2p_rtp_write(instance, instance1, rtpheader, res, hdrlen)) {
|
||||||
|
struct timeval rxtime;
|
||||||
|
struct ast_frame *f;
|
||||||
|
|
||||||
|
/* Update statistics for jitter so they are correct in RTCP */
|
||||||
|
calc_rxstamp(&rxtime, rtp, timestamp, mark);
|
||||||
|
|
||||||
|
/* When doing P2P we don't need to raise any frames about SSRC change to the core */
|
||||||
|
while ((f = AST_LIST_REMOVE_HEAD(&frames, frame_list)) != NULL) {
|
||||||
|
ast_frfree(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
return &ast_null_frame;
|
||||||
|
}
|
||||||
|
|
||||||
if (rtp_debug_test_addr(&addr)) {
|
if (rtp_debug_test_addr(&addr)) {
|
||||||
ast_verbose("Got RTP packet from %s (type %-2.2d, seq %-6.6u, ts %-6.6u, len %-6.6d)\n",
|
ast_verbose("Got RTP packet from %s (type %-2.2d, seq %-6.6u, ts %-6.6u, len %-6.6d)\n",
|
||||||
ast_sockaddr_stringify(&addr),
|
ast_sockaddr_stringify(&addr),
|
||||||
|
Reference in New Issue
Block a user