[asterisk-bugs] [JIRA] (ASTERISK-25579) Outgoing Packetization Time (Speex, AMR, Opus, …)
Rusty Newton (JIRA)
noreply at issues.asterisk.org
Fri Nov 20 08:33:33 CST 2015
[ https://issues.asterisk.org/jira/browse/ASTERISK-25579?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rusty Newton updated ASTERISK-25579:
------------------------------------
Status: Open (was: Triage)
> Outgoing Packetization Time (Speex, AMR, Opus, …)
> -------------------------------------------------
>
> Key: ASTERISK-25579
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-25579
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Codecs/codec_speex, Codecs/General
> Affects Versions: 11.20.0, 13.6.0
> Reporter: Alexander Traud
> Severity: Minor
>
> Since Asterisk 13, an ast_translator {{codecs/codec_*}} does not know the amount of frames to be put into one RTP payload packet in its routine frameout. However, this is required when the packetization time (in SIP/SDP: ptime) is not the default one.
> For example, when a ptime of 60ms is negotiated for Speex, Asterisk should send 60ms in one RTP packet. Currently, Asterisk sends three times 20ms.
> This affects all (only) those formats which cannot be smoothed:
> * Asterisk 11, see res/res_rtp_asterisk.c:ast_rtp_write
> * Asterisk 13, see main/codec_builtin.c; all codecs without ".smooth = 1"
> With those formats, ast_format_can_be_smoothed(.) returns 0, because the format uses
> (A) variable bit-rate (vbr) or
> (B) several modes with different bit-rates.
> In those cases, {{ast_format_get_minimum_bytes(.)}} is of no help to create the amount of frames per payload. These formats are Speex, G.719, [G.723.1|http://asterisk.hosting.lv/], [Siren|http://www.digium.com/products/asterisk/downloads], [SILK|https://github.com/traud/asterisk-silk], and CELT. Furthermore, this affects external modules like [iLBC 20|https://github.com/traud/asterisk-ilbc], [AMR(-WB)|https://github.com/traud/asterisk-amr], [Codec 2|https://github.com/traud/asterisk-codec2], and [Opus|https://github.com/seanbright/asterisk-opus].
> This is just about outgoing packets (Asterisk to another party). Incoming packets must be decodable by a transcoding module even without this information, because the incoming ptime could change at any time.
> {{ast_rtp_codecs_get_framing(.)}} provides this information. Furthermore, the channel driver negotiates this value, therefore the channel knows this as well. However, this information is required in {{ast_translator.frameout(ast_trans_pvt)}}.
> In Asterisk 11, this information is available. However, its Speex module does not us this to create the correct frame length, either.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list