diff options
author | Mark Michelson <mmichelson@digium.com> | 2008-08-06 00:30:53 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2008-08-06 00:30:53 +0000 |
commit | 89c2844242e0345d913cb8985ef45c444bc75ef5 (patch) | |
tree | d588c9ea30fd1501e5ec0d5cc518b38e7fd7092d /main/channel.c | |
parent | 5eaf8450d6e71d391e60e238195da5c0b69232e9 (diff) |
Merged revisions 135841,135847,135850 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r135841 | mmichelson | 2008-08-05 19:25:10 -0500 (Tue, 05 Aug 2008) | 27 lines
Merging the issue11259 branch.
The purpose of this branch was to take into account
"burps" which could cause jitterbuffers to misbehave.
One such example is if the L option to Dial() were used
to inject audio into a bridged conversation at regular
intervals. Since the audio here was not passed through
the jitterbuffer, it would cause a gap in the jitterbuffer's
timestamps which would cause a frames to be dropped for a
brief period.
Now ast_generic_bridge will empty and reset the jitterbuffer
each time it is called. This causes injected audio to be handled
properly.
ast_generic_bridge also will empty and reset the jitterbuffer
if it receives an AST_CONTROL_SRCUPDATE frame since the change
in audio source could negatively affect the jitterbuffer.
All of this was made possible by adding a new public API call
to the abstract_jb called ast_jb_empty_and_reset.
(closes issue #11259)
Reported by: plack
Tested by: putnopvut
........
r135847 | mmichelson | 2008-08-05 19:27:54 -0500 (Tue, 05 Aug 2008) | 4 lines
Revert inadvertent changes to app_skel that occurred when
I was testing for a memory leak
........
r135850 | mmichelson | 2008-08-05 19:29:54 -0500 (Tue, 05 Aug 2008) | 3 lines
Remove properties that should not be here
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@135851 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/channel.c')
-rw-r--r-- | main/channel.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c index 33bcc0552..276b3687c 100644 --- a/main/channel.c +++ b/main/channel.c @@ -4159,6 +4159,8 @@ static enum ast_bridge_result ast_generic_bridge(struct ast_channel *c0, struct /* Check the need of a jitterbuffer for each channel */ jb_in_use = ast_jb_do_usecheck(c0, c1); + if (jb_in_use) + ast_jb_empty_and_reset(c0, c1); ast_poll_channel_add(c0, c1); @@ -4224,6 +4226,9 @@ static enum ast_bridge_result ast_generic_bridge(struct ast_channel *c0, struct case AST_CONTROL_VIDUPDATE: case AST_CONTROL_SRCUPDATE: ast_indicate_data(other, f->subclass, f->data.ptr, f->datalen); + if (jb_in_use) { + ast_jb_empty_and_reset(c0, c1); + } break; default: *fo = f; |