[asterisk-dev] [Code Review] 4609: chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices.
Matt Jordan
reviewboard at asterisk.org
Fri Apr 10 16:44:15 CDT 2015
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4609/#review15183
-----------------------------------------------------------
Reviewed: I didn't have any findings.
- Matt Jordan
On April 9, 2015, 3:50 p.m., rmudgett wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4609/
> -----------------------------------------------------------
>
> (Updated April 9, 2015, 3:50 p.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Bugs: ASTERISK-24841
> https://issues.asterisk.org/jira/browse/ASTERISK-24841
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> With this patch, chan_pjsip/res_pjsip now sets the native formats to the
> codecs negotiated by a call.
>
> * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native
> formats to include all the negotiated audio codecs instead of only the
> initial preferred audio codec and later the currently received audio
> codec.
>
> * The audio frame handling in channel.c:ast_read() is more streamlined and
> will automatically adjust to changes in received frame formats. The new
> policy is to remove translation and pass the new frame format to the
> receiver except if the translation was to a signed linear format. A more
> long winded version is commented in ast_read() along with some caveats.
>
> * The audio frame handling in channel.c:ast_write() is more streamlined
> and will automatically adjust any needed translation to changes in the
> frame formats sent. Frame formats sent can change for many reasons such
> as a recording is being played back or the bridged peer changed the format
> it sends. Since it is a normal expectation that sent formats can change,
> the codec mismatch warning message is demoted to a debug message.
>
> * Removed the short circuit check in
> channel.c:ast_channel_make_compatible_helper(). Two party bridges need to
> make channels compatible with each other. However, transfers and moving
> channels among bridges can result in otherwise compatible channels having
> sub-optimal translation paths if the make compatible check is short
> circuited. A result of forcing the reevaluation of channel compatibility
> is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc
> options take effect consistently now. It is unfortunate that these two
> options are enabled by default and negate some of the benefits to the
> changes in channel.c:ast_read() by forcing translation through signed
> linear on a two party bridge.
>
> * Improved the softmix bridge technology to better control the translation
> of frames to the bridge. All of the incoming translation is now normally
> handled by ast_read() instead of splitting any translation steps between
> ast_read() and the slin factory. If any frame comes in with an unexpected
> format then the translation path in ast_read() is updated for the next
> frame and the slin factory handles the current frame translation.
>
> This is the final patch in a series of patches aimed at improving
> translation path choices. The other patches are on the following reviews:
> https://reviewboard.asterisk.org/r/4600/
> https://reviewboard.asterisk.org/r/4605/
>
>
> Diffs
> -----
>
> /branches/13/res/res_pjsip_sdp_rtp.c 434526
> /branches/13/main/channel.c 434526
> /branches/13/include/asterisk/channel.h 434526
> /branches/13/channels/chan_pjsip.c 434526
> /branches/13/bridges/bridge_softmix.c 434526
>
> Diff: https://reviewboard.asterisk.org/r/4609/diff/
>
>
> Testing
> -------
>
> * The testsuite still passes as well as it ever has.
>
> * Manual SIP and DTMF attended transfers still function. With all patches
> in the series applied, if a low speed party transfers a higher speed party
> to another high speed party then when the transfer completes the resulting
> call works at the higher speed. Without the patch the resulting call may
> go through a sub-optimal translation path with reduced audio quality.
>
> * ConfBridge bridges are able to change mixing rates as different speed
> participants enter and leave the bridge. Sound files played back to
> individual participants may go out with a different codec than the
> participant sends to the conference. If the conference bridge is mixing
> at a lower rate than a participant then the conference media may go out
> with a different codec than the participant sends to the conference.
>
> * Used app_originate to setup a call through a non-optimizing local
> channel. The resulting call used the same codecs as before the patch even
> between parties with different speeds.
>
>
> Thanks,
>
> rmudgett
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150410/1fc4cea4/attachment.html>
More information about the asterisk-dev
mailing list