diff options
author | Lorenzo Miniero <lminiero@gmail.com> | 2016-11-29 16:31:21 +0100 |
---|---|---|
committer | Lorenzo Miniero <lminiero@gmail.com> | 2017-01-23 13:25:31 +0100 |
commit | 1061539b75811d9115dcbc0be46967515bd9e2d1 (patch) | |
tree | 5c1996f9a2943cc130c067546960732d2d81129b /main/channel.c | |
parent | 31268e0a280110748f33314a2c09563c576243de (diff) |
media: Add experimental support for RTCP feedback.
This change adds experimental support for providing RTCP
feedback information to codec modules so they can dynamically
change themselves based on conditions.
ASTERISK-26584
Change-Id: Ifd6aa77fb4a7ff546c6025900fc2baf332c31857
Diffstat (limited to 'main/channel.c')
-rw-r--r-- | main/channel.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c index 00cfa31aa..68c45a260 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1531,6 +1531,7 @@ int ast_is_deferrable_frame(const struct ast_frame *frame) case AST_FRAME_IAX: case AST_FRAME_CNG: case AST_FRAME_MODEM: + case AST_FRAME_RTCP: return 0; } return 0; @@ -2866,6 +2867,7 @@ int __ast_answer(struct ast_channel *chan, unsigned int delay) case AST_FRAME_IMAGE: case AST_FRAME_HTML: case AST_FRAME_MODEM: + case AST_FRAME_RTCP: done = 1; break; case AST_FRAME_CONTROL: @@ -4348,6 +4350,14 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) */ ast_read_generator_actions(chan, f); break; + case AST_FRAME_RTCP: + /* Incoming RTCP feedback needs to get to the translator for + * outgoing media, which means we treat it as an ast_write */ + if (ast_channel_writetrans(chan)) { + ast_translate(ast_channel_writetrans(chan), f, 0); + } + ast_frfree(f); + f = &ast_null_frame; default: /* Just pass it on! */ break; |