diff --git a/libavformat/sdp.c b/libavformat/sdp.c index 57044d4c51..186f83b1a0 100644 --- a/libavformat/sdp.c +++ b/libavformat/sdp.c @@ -128,7 +128,7 @@ static int sdp_get_address(char *dest_addr, int size, int *ttl, const char *url) *ttl = 0; - if (strcmp(proto, "rtp")) { + if (strcmp(proto, "rtp") && strcmp(proto, "srtp")) { /* The url isn't for the actual rtp sessions, * don't parse out anything else than the destination. */ @@ -667,6 +667,19 @@ int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size) av_strlcatf(buf, size, "a=control:streamid=%d\r\n", i + j); } + if (ac[i]->pb && ac[i]->pb->av_class) { + uint8_t *crypto_suite = NULL, *crypto_params = NULL; + av_opt_get(ac[i]->pb, "srtp_out_suite", AV_OPT_SEARCH_CHILDREN, + &crypto_suite); + av_opt_get(ac[i]->pb, "srtp_out_params", AV_OPT_SEARCH_CHILDREN, + &crypto_params); + if (crypto_suite && crypto_suite[0]) + av_strlcatf(buf, size, + "a=crypto:1 %s inline:%s\r\n", + crypto_suite, crypto_params); + av_free(crypto_suite); + av_free(crypto_params); + } } }