MT#55283 use fancy "named args" syntax

... for codec_store functions

Change-Id: I593291daa97a5364000e455262018903cd958a4f
pull/1759/head
Richard Fuchs 2 years ago
parent 9b6cc05bd0
commit c42887a2cd

@ -2382,11 +2382,11 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
other_media->index);
if (flags) {
if (flags->reuse_codec)
codec_store_populate_reuse(&other_media->codecs, &sp->codecs, flags->codec_set,
false);
codec_store_populate_reuse(&other_media->codecs, &sp->codecs,
.codec_set = flags->codec_set);
else
codec_store_populate(&other_media->codecs, &sp->codecs, flags->codec_set,
false);
codec_store_populate(&other_media->codecs, &sp->codecs,
.codec_set = flags->codec_set);
codec_store_strip(&other_media->codecs, &flags->codec_strip, flags->codec_except);
codec_store_offer(&other_media->codecs, &flags->codec_offer, &sp->codecs);
if (!other_media->codecs.strip_full)
@ -2396,8 +2396,7 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
codec_store_accept(&other_media->codecs, &flags->codec_consume, &sp->codecs);
codec_store_track(&other_media->codecs, &flags->codec_mask);
} else
codec_store_populate(&other_media->codecs, &sp->codecs, NULL,
false);
codec_store_populate(&other_media->codecs, &sp->codecs);
// we don't update the answerer side if the offer is not RTP but is going
// to RTP (i.e. T.38 transcoding) - instead we leave the existing codec list
@ -2412,9 +2411,9 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
STR_FMT(&media->monologue->tag),
media->index);
if (flags && flags->reuse_codec)
codec_store_populate_reuse(&media->codecs, &sp->codecs, NULL, false);
codec_store_populate_reuse(&media->codecs, &sp->codecs);
else
codec_store_populate(&media->codecs, &sp->codecs, NULL, false);
codec_store_populate(&media->codecs, &sp->codecs);
}
if (flags) {
codec_store_strip(&media->codecs, &flags->codec_strip, flags->codec_except);
@ -2452,11 +2451,13 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
codec_answer_only = false;
if (flags->reuse_codec)
codec_store_populate_reuse(&other_media->codecs, &sp->codecs, flags->codec_set,
codec_answer_only);
codec_store_populate_reuse(&other_media->codecs, &sp->codecs,
.codec_set = flags->codec_set,
.answer_only = codec_answer_only);
else
codec_store_populate(&other_media->codecs, &sp->codecs, flags->codec_set,
codec_answer_only);
codec_store_populate(&other_media->codecs, &sp->codecs,
.codec_set = flags->codec_set,
.answer_only = codec_answer_only);
codec_store_strip(&other_media->codecs, &flags->codec_strip, flags->codec_except);
codec_store_offer(&other_media->codecs, &flags->codec_offer, &sp->codecs);
codec_store_check_empty(&other_media->codecs, &sp->codecs);
@ -3054,8 +3055,8 @@ int monologue_publish(struct call_monologue *ml, GQueue *streams, struct sdp_ng_
__media_init_from_flags(media, NULL, sp, flags);
codec_store_populate(&media->codecs, &sp->codecs, NULL, false);
if (codec_store_accept_one(&media->codecs, &flags->codec_accept, flags->accept_any ? true : false))
codec_store_populate(&media->codecs, &sp->codecs);
if (codec_store_accept_one(&media->codecs, &flags->codec_accept, !!flags->accept_any))
return -1;
// the most we can do is receive
@ -3126,7 +3127,7 @@ static int monologue_subscribe_request1(struct call_monologue *src_ml, struct ca
__media_init_from_flags(src_media, dst_media, sp, flags);
codec_store_populate(&dst_media->codecs, &src_media->codecs, NULL, false);
codec_store_populate(&dst_media->codecs, &src_media->codecs);
codec_store_strip(&dst_media->codecs, &flags->codec_strip, flags->codec_except);
codec_store_strip(&dst_media->codecs, &flags->codec_consume, flags->codec_except);
codec_store_strip(&dst_media->codecs, &flags->codec_mask, flags->codec_except);
@ -3238,12 +3239,14 @@ int monologue_subscribe_answer(struct call_monologue *dst_ml, struct sdp_ng_flag
__media_init_from_flags(dst_media, NULL, sp, flags);
if (flags->allow_transcoding) {
codec_store_populate(&dst_media->codecs, &sp->codecs, flags->codec_set, true);
codec_store_populate(&dst_media->codecs, &sp->codecs,
.codec_set = flags->codec_set,
.answer_only = true);
codec_store_strip(&dst_media->codecs, &flags->codec_strip, flags->codec_except);
codec_store_offer(&dst_media->codecs, &flags->codec_offer, &sp->codecs);
}
else {
codec_store_populate(&dst_media->codecs, &sp->codecs, NULL, true);
codec_store_populate(&dst_media->codecs, &sp->codecs, .answer_only = true);
if (!codec_store_is_full_answer(&src_media->codecs, &dst_media->codecs))
return -1;
}

@ -4792,17 +4792,17 @@ static struct rtp_payload_type *codec_store_add_link(struct codec_store *cs,
}
// appends to the end, but before supplemental codecs
__attribute__((nonnull(1, 2)))
static struct rtp_payload_type *codec_store_add_order(struct codec_store *cs, struct rtp_payload_type *pt) {
return codec_store_add_link(cs, pt, cs->supp_link);
}
// always add to end
__attribute__((nonnull(1, 2)))
static void codec_store_add_end(struct codec_store *cs, struct rtp_payload_type *pt) {
codec_store_add_link(cs, pt, NULL);
}
void codec_store_populate_reuse(struct codec_store *dst, struct codec_store *src, GHashTable *codec_set,
bool answer_only)
{
void __codec_store_populate_reuse(struct codec_store *dst, struct codec_store *src, struct codec_store_args a) {
// start fresh
struct call_media *media = dst->media;
struct call *call = media ? media->call : NULL;
@ -4817,11 +4817,11 @@ void codec_store_populate_reuse(struct codec_store *dst, struct codec_store *src
STR_FMT(&pt->encoding_with_params),
pt->payload_type);
else {
if (!answer_only) {
if (!a.answer_only) {
ilogs(codec, LOG_DEBUG, "Adding codec " STR_FORMAT " (%i) to end of list",
STR_FMT(&pt->encoding_with_params),
pt->payload_type);
__codec_options_set(call, pt, codec_set);
__codec_options_set(call, pt, a.codec_set);
codec_store_add_end(dst, pt);
}
else
@ -4851,12 +4851,10 @@ void codec_store_check_empty(struct codec_store *dst, struct codec_store *src) {
ilog(LOG_WARN, "Usage error: List of codecs empty. Restoring original list of codecs. "
"Results may be unexpected.");
codec_store_populate(dst, src, NULL, false);
codec_store_populate(dst, src);
}
void codec_store_populate(struct codec_store *dst, struct codec_store *src, GHashTable *codec_set,
bool answer_only)
{
void __codec_store_populate(struct codec_store *dst, struct codec_store *src, struct codec_store_args a) {
// start fresh
struct codec_store orig_dst;
codec_store_move(&orig_dst, dst);
@ -4868,7 +4866,7 @@ void codec_store_populate(struct codec_store *dst, struct codec_store *src, GHas
struct rtp_payload_type *pt = l->data;
struct rtp_payload_type *orig_pt = g_hash_table_lookup(orig_dst.codecs,
GINT_TO_POINTER(pt->payload_type));
if (answer_only && !orig_pt) {
if (a.answer_only && !orig_pt) {
ilogs(codec, LOG_DEBUG, "Not adding stray answer codec " STR_FORMAT " (%i)",
STR_FMT(&pt->encoding_with_params),
pt->payload_type);
@ -4889,7 +4887,7 @@ void codec_store_populate(struct codec_store *dst, struct codec_store *src, GHas
if (pt->for_transcoding)
codec_touched(dst, pt);
}
__codec_options_set(call, pt, codec_set);
__codec_options_set(call, pt, a.codec_set);
codec_store_add_end(dst, pt);
}

@ -111,10 +111,19 @@ void codec_calc_jitter(struct ssrc_ctx *, unsigned long ts, unsigned int clockra
void codec_update_all_handlers(struct call_monologue *ml);
void codec_update_all_source_handlers(struct call_monologue *ml, const struct sdp_ng_flags *flags);
struct codec_store_args {
GHashTable *codec_set;
bool answer_only;
};
void codec_store_cleanup(struct codec_store *cs);
void codec_store_init(struct codec_store *cs, struct call_media *);
void codec_store_populate(struct codec_store *, struct codec_store *, GHashTable *, bool answer_only);
void codec_store_populate_reuse(struct codec_store *, struct codec_store *, GHashTable *, bool answer_only);
void __codec_store_populate(struct codec_store *dst, struct codec_store *src, struct codec_store_args);
#define codec_store_populate(dst, src, ...) \
__codec_store_populate(dst, src, (struct codec_store_args) {__VA_ARGS__})
void __codec_store_populate_reuse(struct codec_store *, struct codec_store *, struct codec_store_args);
#define codec_store_populate_reuse(dst, src, ...) \
__codec_store_populate_reuse(dst, src, (struct codec_store_args) {__VA_ARGS__})
void codec_store_add_raw(struct codec_store *cs, struct rtp_payload_type *pt);
void codec_store_strip(struct codec_store *, GQueue *strip, GHashTable *except);
void codec_store_offer(struct codec_store *, GQueue *, struct codec_store *);

Loading…
Cancel
Save