sdp: Make opus declaration conform to the spec

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Timothy B. Terriberry 2014-09-24 17:43:22 -07:00 committed by Martin Storsjö
parent 5517466804
commit a05f5052fe

View File

@ -583,8 +583,18 @@ static char *sdp_write_media_attributes(char *buff, int size, AVCodecContext *c,
payload_type, c->sample_rate);
break;
case AV_CODEC_ID_OPUS:
av_strlcatf(buff, size, "a=rtpmap:%d opus/48000\r\n",
/* The opus RTP draft says that all opus streams MUST be declared
as stereo, to avoid negotiation failures. The actual number of
channels can change on a packet-by-packet basis. The number of
channels a receiver prefers to receive or a sender plans to send
can be declared via fmtp parameters (both default to mono), but
receivers MUST be able to receive and process stereo packets. */
av_strlcatf(buff, size, "a=rtpmap:%d opus/48000/2\r\n",
payload_type);
if (c->channels == 2) {
av_strlcatf(buff, size, "a=fmtp:%d sprop-stereo:1\r\n",
payload_type);
}
break;
default:
/* Nothing special to do here... */