[Asterisk-code-review] bridge: Don't try to match audio formats. (asterisk[16])

Joshua Colp asteriskteam at digium.com
Wed May 20 04:25:10 CDT 2020


Joshua Colp has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/14420 )


Change subject: bridge: Don't try to match audio formats.
......................................................................

bridge: Don't try to match audio formats.

When bridging channels we were trying to match the audio
formats of both sides in combination with the configured
formats. While this is allowed in SDP in practice this
causes extra reinvites and problems. This change ensures
that audio streams use the formats of the first existing
active audio stream. It is only when other stream types
(like video) exist that this will result in re-negotiation
occurring for those streams only.

ASTERISK-28871

Change-Id: I22f5a3e7db29e00c165e74d05d10856f6086fe47
---
M bridges/bridge_native_rtp.c
M bridges/bridge_simple.c
2 files changed, 4 insertions(+), 24 deletions(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/20/14420/1

diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c
index 19c6ab5..efe476e 100644
--- a/bridges/bridge_native_rtp.c
+++ b/bridges/bridge_native_rtp.c
@@ -886,8 +886,6 @@
 
 	if (audio_formats) {
 		for (i = 0; i < ast_stream_topology_get_count(new_topology); ++i) {
-			struct ast_format_cap *joint;
-
 			stream = ast_stream_topology_get_stream(new_topology, i);
 
 			if (ast_stream_get_type(stream) != AST_MEDIA_TYPE_AUDIO ||
@@ -895,16 +893,8 @@
 				continue;
 			}
 
-			joint = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
-			if (!joint) {
-				continue;
-			}
-
-			ast_format_cap_append_from_cap(joint, ast_stream_get_formats(stream),
-				AST_MEDIA_TYPE_AUDIO);
-			ast_format_cap_append_from_cap(joint, audio_formats, AST_MEDIA_TYPE_AUDIO);
-			ast_stream_set_formats(stream, joint);
-			ao2_ref(joint, -1);
+			/* We haven't actually modified audio_formats so this is safe */
+			ast_stream_set_formats(stream, (struct ast_format_cap *)audio_formats);
 		}
 	}
 
diff --git a/bridges/bridge_simple.c b/bridges/bridge_simple.c
index abda774..1e224f7 100644
--- a/bridges/bridge_simple.c
+++ b/bridges/bridge_simple.c
@@ -90,8 +90,6 @@
 
 	if (audio_formats) {
 		for (i = 0; i < ast_stream_topology_get_count(new_topology); ++i) {
-			struct ast_format_cap *joint;
-
 			stream = ast_stream_topology_get_stream(new_topology, i);
 
 			if (ast_stream_get_type(stream) != AST_MEDIA_TYPE_AUDIO ||
@@ -99,16 +97,8 @@
 				continue;
 			}
 
-			joint = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
-			if (!joint) {
-				continue;
-			}
-
-			ast_format_cap_append_from_cap(joint, ast_stream_get_formats(stream),
-				AST_MEDIA_TYPE_AUDIO);
-			ast_format_cap_append_from_cap(joint, audio_formats, AST_MEDIA_TYPE_AUDIO);
-			ast_stream_set_formats(stream, joint);
-			ao2_ref(joint, -1);
+			/* We haven't actually modified audio_formats so this is safe */
+			ast_stream_set_formats(stream, (struct ast_format_cap *)audio_formats);
 		}
 	}
 

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/14420
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: I22f5a3e7db29e00c165e74d05d10856f6086fe47
Gerrit-Change-Number: 14420
Gerrit-PatchSet: 1
Gerrit-Owner: Joshua Colp <jcolp at sangoma.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20200520/24f7d4a2/attachment-0001.html>


More information about the asterisk-code-review mailing list