This is needed to correctly print media labels for SIPREC in case the
input SDPs already had media labels.
Change-Id: I021f44ba28a3648ceb62db12425ddf545de42a96
For a repeated subscribe-request on an existing monologue, make sure
that existing media sections are re-used for the same subscriptions as
they were previously, and only create new ones in an append-only fashion
for media subs which didn't previously exist.
Change-Id: I410c6af17eb31a5c5c43c78a7f82ba867f8480b7
New NG protocol commands that mix audio from a source participant
into a destination participant's stream without a full offer/answer
exchange.
- inject start: creates one-way subscription with audio_player mixing
- inject stop: removes injection and restores original codec routing
- Supports cross-call injection via source-call-id (merges calls internally)
- inject attribute persisted through Redis for HA failover
- Audio-only; matches media by media-id, index, then type fallback
Closes#2082
Change-Id: Ib88113b021a4b76bf98892eb1af60c0b36c0d6d3
Provide an extra codec-store for the lookup of the answer codec. This is
needed for codec switches during an extra answer, as the original codecs
are kept in a different codec-store.
Closes#2073
Change-Id: I7e2efc434789ecc8d3b5fcf97240e5c3f7c84652
Use a pointer to the arena plus a comparison test to determine whether
to ref or to dup the string, instead of a function pointer. The function
pointer alone wasn't enough as there can be multiple arenas.
Change-Id: Icd317e524fc2e5842f90d172ef7089d2cb0a5a28
Introduce three new NG protocol flags that automatically select the matching
configured rtpengine interface based on the system's routing table:
- inbound-peer=<ip>: resolves to interface for inbound (from) direction
- outbound-peer=<ip>: resolves to interface for outbound (to) direction
- peer=<ip> resolves to interface when only one interface is required
When these flags are used, the system:
- Uses a temporary UDP socket to determine the local address assigned by routing
- Finds the first configured rtpengine interface matching that local address
- Uses that interface for the media stream
This allows dynamic interface selection based on network topology without
requiring explicit interface names in the signaling.
Closes#2033
Change-Id: I211806b9cef9d028fdb689d90ea3fe627bdf5d0d
Instead of opening local sockets directly during call setup, just create
the appropriate objects first, and then open the actual sockets in a
second step.
Move the opening step down, after the bundle logic has run. This way we
can avoid opening sockets that aren't needed.
Removes an intermediate step of obtaining consecutive ports.
Change-Id: Ib94c871ed6b3a433872afd23cb1aebbd9910b33e
Gather candidates in one step, and create candidate pairings against
local sockets in a second step.
Change-Id: I85bba7fe95af14d7f77a14d5baad4ea072a83bd3
Store the current (last) used endpoint map in the media object. This can
then be directly used when port latching is requested.
Remove and close sockets from endpoint map if fewer ports are needed.
Change-Id: I58aab82f82ecc3b0a7fc7a781394c8d77e715ecf