MT#55283 refactor update_all functions

Change-Id: Ica0a9f5f76bf8edf194813e18d71437d6756280b
pull/2090/head
Richard Fuchs 4 weeks ago
parent 59432f0954
commit 0a9e85e8a3

@ -4919,44 +4919,55 @@ static void __buffer_delay_raw(struct delay_buffer *dbuf, struct codec_handler *
#endif
void codec_update_media_handlers(struct call_media *source_media) {
IQUEUE_FOREACH(&source_media->media_subscribers, ms) {
struct call_media *sink_media = ms->media;
if (!sink_media)
continue;
codec_handlers_update(source_media, sink_media);
__media_unconfirm(sink_media, "updating codec handlers");
}
__media_unconfirm(source_media, "updating codec handlers");
}
void codec_update_all_handlers(struct call_monologue *ml) {
for (int i = 0; i < ml->medias->len; i++)
{
struct call_media * source_media = ml->medias->pdata[i];
struct call_media *source_media = ml->medias->pdata[i];
if (!source_media)
continue;
IQUEUE_FOREACH(&source_media->media_subscribers, ms) {
struct call_media *sink_media = ms->media;
codec_update_media_handlers(source_media);
}
}
if (!sink_media)
continue;
void __codec_update_media_source_handlers(struct call_media *sink_media, struct chu_args a) {
IQUEUE_FOREACH(&sink_media->media_subscriptions, ms) {
struct call_media *source_media = ms->media;
codec_handlers_update(source_media, sink_media);
}
if (!source_media)
continue;
__codec_handlers_update(source_media, sink_media, a);
__media_unconfirm(source_media, "updating codec source handlers");
}
dialogue_unconfirm(ml, "updating codec handlers");
__media_unconfirm(sink_media, "updating codec source handlers");
}
void codec_update_all_source_handlers(struct call_monologue *ml, const sdp_ng_flags *flags, bool clear_delay_buffer) {
void __codec_update_all_source_handlers(struct call_monologue *ml, struct chu_args a) {
for (int i = 0; i < ml->medias->len; i++)
{
struct call_media * sink_media = ml->medias->pdata[i];
struct call_media *sink_media = ml->medias->pdata[i];
if (!sink_media)
continue;
IQUEUE_FOREACH(&sink_media->media_subscriptions, ms) {
struct call_media *source_media = ms->media;
if (!source_media)
continue;
codec_handlers_update(source_media, sink_media, .flags = flags, .clear_delay_buffer = clear_delay_buffer);
}
__codec_update_media_source_handlers(sink_media, a);
}
dialogue_unconfirm(ml, "updating codec source handlers");
}

@ -1673,7 +1673,7 @@ const char * call_play_media_for_ml(struct call_monologue *ml,
{
#ifdef WITH_TRANSCODING
/* if mixing is enabled, codec handlers of all sources must be updated */
codec_update_all_source_handlers(ml, flags, true);
codec_update_all_source_handlers(ml, .flags = flags, .clear_delay_buffer = true);
/* this starts the audio player if needed */
update_init_monologue_subscribers(ml, OP_PLAY_MEDIA);
@ -1706,7 +1706,7 @@ long long call_stop_media_for_ml(struct call_monologue *ml)
#ifdef WITH_TRANSCODING
long long ret = media_player_stop(ml->player);
/* restore to non-mixing if needed */
codec_update_all_source_handlers(ml, NULL, false);
codec_update_all_source_handlers(ml);
update_init_monologue_subscribers(ml, OP_STOP_MEDIA);
/* mark MoH as already not used (it can be unset now) */
ml->player->opts.moh = 0;
@ -2052,7 +2052,7 @@ static void media_player_run(void *ptr) {
if (mp->opts.block_egress)
MEDIA_CLEAR(mp->media, BLOCK_EGRESS);
codec_update_all_source_handlers(mp->media->monologue, NULL, false);
codec_update_all_source_handlers(mp->media->monologue);
update_init_monologue_subscribers(mp->media->monologue, OP_PLAY_MEDIA);
rwlock_unlock_w(&call->master_lock);

@ -159,8 +159,6 @@ struct codec_handler *codec_handler_make_media_player(const rtp_payload_type *sr
struct codec_handler *codec_handler_make_dummy(const rtp_payload_type *dst_pt, struct call_media *media,
str_case_value_ht codec_set);
void codec_calc_jitter(struct ssrc_entry_call *, unsigned long ts, unsigned int clockrate, int64_t);
void codec_update_all_handlers(struct call_monologue *ml);
void codec_update_all_source_handlers(struct call_monologue *ml, const sdp_ng_flags *flags, bool clear_delay_buffer);
struct codec_store_args {
str_case_value_ht codec_set;
@ -239,6 +237,20 @@ struct chu_args {
#define codec_handlers_update(r, s, ...) \
__codec_handlers_update(r, s, (struct chu_args) {__VA_ARGS__})
__attribute__((nonnull(1)))
void codec_update_media_handlers(struct call_media *);
__attribute__((nonnull(1)))
void __codec_update_media_source_handlers(struct call_media *, struct chu_args);
__attribute__((nonnull(1)))
void codec_update_all_handlers(struct call_monologue *ml);
__attribute__((nonnull(1)))
void __codec_update_all_source_handlers(struct call_monologue *ml, struct chu_args);
#define codec_update_media_source_handlers(r, ...) \
__codec_update_media_source_handlers(r, (struct chu_args) {__VA_ARGS__})
#define codec_update_all_source_handlers(r, ...) \
__codec_update_all_source_handlers(r, (struct chu_args) {__VA_ARGS__})
bool codec_handler_transform(struct call_media *r, ng_codecs_q *);
#ifdef WITH_TRANSCODING

Loading…
Cancel
Save