Group video calling in asterisk

Dial only handles early media when there is a single candidate destination. That is mainly done for the normal telephony case where you wouldn’t generally want callees to hear you before they had answered. However the test is obviously being applied to all early media not just early media in the direction where it would need to be merged.

Basically this code is doing it:

	/* single is set if only one destination is enabled */
	int single = outgoing && !AST_LIST_NEXT(outgoing, node);

which is basically checking if the list of destinations contains only one entry.

This is then followed by code similar to this in various places;

                    /* Setup early media if appropriate */
                    if (single && !caller_entertained
                        && CAN_EARLY_BRIDGE(peerflags, in, c)) {
                        ast_channel_early_bridge(in, c);
                    }

Obviously, if you removed the check, you would also need to tell ast_channel_early_bridge how to cope with n-party calls.

1 Like