Add RED (RFC 2198) codec definition to codeclib as a supplemental codec.
Modify codec_store_accept_one() to preserve supplemental codecs whose
clock rate matches the accepted primary codec. Skip supplemental codecs
in codec_store_is_full_answer() since they are optional in SDP answers.
Closes#2100
Change-Id: Ie81f45091c5d3dc55e20896d5a6e7a8361fda2f4
In case of bitstream style codecs which still use an encoder which
operates on fixed frame sizes (e.g. G.726), passing the maximum allowed
frame/packet size to the packetizer is not enough. Instead it needs to
know separately how much data it is expected to return. Add another
argument to pass this information.
This also fixes the incorrect math to adjust the frame duration in case
of chunked output.
Change-Id: I1d57c684ecea055059481de0220f6b6001088605
The format of a received audio frame can differ from the required format
for the audio player (Opus decoder supporting multiple sample rates).
Add a resampler in case resampling is needed.
Change-Id: I7f1be18334a5a12c6491e7763699559d2ee487f1
Don't blindly take over a source DTMF PT if one is present. Check if the
destination has _some_ DTMF PT, and only then take over the source. This
makes the behaviour more closely match the documentation.
One test is affected and seems to improve its outcome.
Closes#2091
Change-Id: Ibb9c1f79099fa30ac69ec71b4a4c71af0b88b327
Move o= replacement logic into sdp_out_add_origin. Copy fields from
input source ML if present, or keep unchanged. Generate if not present.
Change-Id: Ieea5abea05bf076262248639118e9e9192f77e1c
This is needed to correctly print media labels for SIPREC in case the
input SDPs already had media labels.
Change-Id: I021f44ba28a3648ceb62db12425ddf545de42a96
- Add pyproject.toml and tox.ini with consistent black and pycodestyle
settings.
- Run black for consistent coding style.
- Manually fix remaining issues:
+ Split overlong strings.
+ Reflow comments.
Change-Id: I731497f3a08bd70eb32ce452d10c00be6dd096f7
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
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