sdp: output speex optional vbr parameter
authorDmitry Samonenko <shreddingwork@gmail.com>
Sat, 13 Oct 2012 15:03:33 +0000 (19:03 +0400)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 13 Oct 2012 16:47:18 +0000 (18:47 +0200)
Optional sdp speex payload parameter is outputed only when
data is encoded. It's not printed in case of stream copy.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/sdp.c

index ca8c3df..c4edd78 100644 (file)
@@ -575,6 +575,20 @@ static char *sdp_write_media_attributes(char *buff, int size, AVCodecContext *c,
         case AV_CODEC_ID_SPEEX:
             av_strlcatf(buff, size, "a=rtpmap:%d speex/%d\r\n",
                                      payload_type, c->sample_rate);
+            if (c->codec) {
+                const char *mode;
+                uint64_t vad_option;
+
+                if (c->flags & CODEC_FLAG_QSCALE)
+                      mode = "on";
+                else if (!av_opt_get_int(c, "vad", AV_OPT_FLAG_ENCODING_PARAM, &vad_option) && vad_option)
+                      mode = "vad";
+                else
+                      mode = "off";
+
+                av_strlcatf(buff, size, "a=fmtp:%d vbr=%s\r\n",
+                                        payload_type, mode);
+            }
             break;
         case AV_CODEC_ID_OPUS:
             av_strlcatf(buff, size, "a=rtpmap:%d opus/48000\r\n",