|
|
|
|
@ -272,6 +272,8 @@ struct rtcp_handler {
|
|
|
|
|
void (*finish)(struct rtcp_process_ctx *, call_t *, const endpoint_t *, const endpoint_t *,
|
|
|
|
|
int64_t);
|
|
|
|
|
void (*destroy)(struct rtcp_process_ctx *);
|
|
|
|
|
|
|
|
|
|
bool no_kernel_fw;
|
|
|
|
|
};
|
|
|
|
|
// collection of all handler types
|
|
|
|
|
struct rtcp_handlers {
|
|
|
|
|
@ -366,9 +368,11 @@ static struct rtcp_handler transcode_handlers = {
|
|
|
|
|
.common = transcode_common,
|
|
|
|
|
.rr = transcode_rr,
|
|
|
|
|
.sr = transcode_sr,
|
|
|
|
|
.no_kernel_fw = true,
|
|
|
|
|
};
|
|
|
|
|
static struct rtcp_handler sink_handlers = {
|
|
|
|
|
.common = sink_common,
|
|
|
|
|
.no_kernel_fw = true,
|
|
|
|
|
};
|
|
|
|
|
static struct rtcp_handler transcode_handlers_wrap = {
|
|
|
|
|
.common = transcode_common_wrap,
|
|
|
|
|
@ -1650,3 +1654,10 @@ out:
|
|
|
|
|
static void sink_common(struct rtcp_process_ctx *ctx, struct rtcp_packet *common) {
|
|
|
|
|
ctx->discard = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool rtcp_kernel_fw(struct call_media *media) {
|
|
|
|
|
if (!media->rtcp_handler)
|
|
|
|
|
return true;
|
|
|
|
|
return !media->rtcp_handler->no_kernel_fw;
|
|
|
|
|
}
|
|
|
|
|
|