G729附件中含糊不清

时间:2014-06-10 08:56:09

标签: sip voip sdp

在SIP SDP中:

如何通过读取SDP媒体属性来检测G729A编解码器? 例如,在SDP下面,这是一个 G729B 编解码器,

m = audio 33712 RTP/AVP 18 101
a = rtpmap:18 G729/8000
a = fmtp:18 annexb=yes
a = rtpmap:101 telephone-event/8000
a = fmtp:101 0-15

如果我得到" annexb = no",是否意味着 G729a ?或当我得到" annexa = yes"只有它的 G729a 。根据{{​​3}} G729编解码器有各种附件,如A,B,C,D,E,F等...如果我想检测它们中的每一个,我可以依赖字符串"附件",例如,我想检测 G729F ,我可以依赖属性字符串" annexf = yes" ??

1 个答案:

答案 0 :(得分:3)

来自RFC4856第2.1.9节

    annexb: indicates that Annex B, voice activity detection, is
    used or preferred.  Permissible values are "yes" and "no"
    (without the quotes); "yes" is implied if this parameter is
    omitted.

更多细节可以从RFC3551第4.5.6节(G.729,G.729a和G.729b)和4.5.7(G.729d和G.729e)中找到

一般来说,G.729 / G.729a / G.729b具有相同的格式(G.729b增加了携带舒适噪声的附加帧)。

G.729附件C:

  

本附件介绍了ITU-T G.729和附件A完整版浮点算法的替代实现。

G.729d和G.279e定义了不同的帧格式(并且在SDP媒体线中的识别方式不同)

G.729附件F:

  

本附件提供了对附件B和D进行整合的说明,特此定义了DTX   附件D的功能

G.729附件G:

  

本附件提供了对附件B和E进行整合的说明,特此定义了DTX   附件E的功能。

因此G.729f和G.729g不引入新格式,但使用G.729d和G.279e的帧格式:(在RF3551上:)

  

语音活动检测器(VAD)和舒适噪音发生器(CNG)      G.729附录B中规定的算法可与附件D和附件D一起使用      附件E框架以及G.729和G.729附件A框架。该      附件D和E的操作算法细节与附件      B CNG在G.729附件F和G中规定。注意附件F.      和G不会引入任何新的编码。接收者必须接受      如果没有使用限制使用舒适噪音框架      信号。 RFC 3555中G729D和G729E的MIME注册[7]      指定一个可以与MIME或SDP一起使用的参数来限制      使用舒适的噪音框架

上面提到的参数是annexb = yes | no


就SDP有效载荷中的表示而言。

  • G729,G729a(和G729c):
    • m =行数:18
    • a = rtpmap:18 G729 / 8000
    • a = fmtp:18 annexb = no(或不存在)
  • G729B
    • m =行数:18
    • a = rtpmap:18 G729 / 8000
    • a = fmtp:18 annexb = yes
  • G729d
    • m =行中的数字: n (动态)
    • a = rtpmap: n G729D / 8000
    • a = fmtp: n annexb = no(或不存在)
  • G729e
    • m =行中的数字: n (动态)
    • a = rtpmap: n G729E / 8000
    • a = fmtp: n annexb = no(或不存在)
  • G729f
    • m =行中的数字: n (动态)
    • a = rtpmap: n G729D / 8000
    • a = fmtp: n annexb = yes
  • G729g
    • m =行中的数字: n (动态)
    • a = rtpmap: n G729E / 8000
    • a = fmtp: n annexb = yes