diff options
author | Joshua Colp <jcolp@digium.com> | 2012-07-13 16:49:40 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2012-07-13 16:49:40 +0000 |
commit | a693fd1d8738a302082bb8e453c0fe69679f4c46 (patch) | |
tree | 8fc6405121dcf0c01d78c7a971feeb3f8f9d7fb6 /main/translate.c | |
parent | 2603707f301a05f07e73134c6baa9e904b7fac7d (diff) |
Add support for parsing SDP attributes, generating SDP attributes, and passing it through.
This support includes codecs such as H.263, H.264, SILK, and CELT. You are able to set up a call and have attribute information pass. This should help considerably with video calls.
Review: https://reviewboard.asterisk.org/r/2005/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@370055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/translate.c')
-rw-r--r-- | main/translate.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/main/translate.c b/main/translate.c index 607fee77b..ce430ce97 100644 --- a/main/translate.c +++ b/main/translate.c @@ -1286,12 +1286,22 @@ unsigned int ast_translate_path_steps(struct ast_format *dst_format, struct ast_ void ast_translate_available_formats(struct ast_format_cap *dest, struct ast_format_cap *src, struct ast_format_cap *result) { struct ast_format tmp_fmt; - struct ast_format cur_src; + struct ast_format cur_dest, cur_src; int src_audio = 0; int src_video = 0; int index; - ast_format_cap_copy(result, dest); + ast_format_cap_iter_start(dest); + while (!ast_format_cap_iter_next(dest, &cur_dest)) { + /* We give preference to a joint format structure if possible */ + if (ast_format_cap_get_compatible_format(src, &cur_dest, &tmp_fmt)) { + ast_format_cap_add(result, &tmp_fmt); + } else { + /* Otherwise we just use the destination format */ + ast_format_cap_add(result, &cur_dest); + } + } + ast_format_cap_iter_end(dest); /* if we don't have a source format, we just have to try all possible destination formats */ |