[asterisk-bugs] [JIRA] (ASTERISK-26611) L16/16000 codec send little endian data with chan_sip

Vitaly Khalmansky (JIRA) noreply at issues.asterisk.org
Fri Nov 18 02:13:10 CST 2016


Vitaly Khalmansky created ASTERISK-26611:
--------------------------------------------

             Summary: L16/16000 codec send little endian data with chan_sip
                 Key: ASTERISK-26611
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-26611
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
          Components: Channels/chan_sip/General, Codecs/General, Core/RTP
    Affects Versions: 13.7.0
         Environment: Ubuntu 14.04.5  on i686 
            Reporter: Vitaly Khalmansky


I try use L16/16000 codec enabled by allow=slin16 in sip.conf of asterisk-13.7.0 on x86 arch with communication with softphone on top of pj-project.

When play test wav file peer side heard noise instead of music.
With other codec selected - music heard as expected.

I run tests with MixMonitor on asterisk - record is music not noise.

I convert wav file to raw sln16 and convert it to big-endian (because asterisk can't read big-endian wav files aka RIFX)
In this case peer heard  music not noise!

I run tcpdump for catch rtp stream and manually examine raw rtp data and raw sln16 (but big-endian) file.  
Byte order in this sources is same!

I make some review for asterisk source code and found: 
a) asterisk allow to read only little-endian wav files aka RIFF
b) when this type of file readed always convert to native machine byte order and define this format as slin16
c) when select codec is L16 same format used and no convertion of byte order before send rtp 
d) on little-endian machines this cause outgoing stream placed in little-endian byte order

It breaks of RFC what define L16 have big-endian byte order.





--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list