In some cases, in particular when multiple input codecs are transcoding
to the same output codec (e.g. audio + DTMF -> audio), it's possible
that one of the input decoders produces frames in a format different
from the one expected by the encoder. Add an encoder-side resampler to
compensate for that.
Change-Id: I74d55edf47ac2fa65f950e68f4a5975f1ab947bb
Some compilers seem to think that there is some uninitialised usage
here. Work around this.
Closes#1891
Change-Id: Ic97a4b589fd2a0c33418a209557b7ce29009c7bf
If recording-method is pcap, then proc is zero-initialized, so
meta_filepath is empty. This shows many logs such as:
[core] Failed to open recording metadata file '(null)' for writing: Bad address
Prevent them by returning earlier.
Closes#1889
Change-Id: Ifeb3038f9a5c0bd6a9b7dd92842dd61783b40263
Use an object with local storage for sdp_address instead of just setting
a pointer. This makes it possible to put a different address.
Change-Id: I92e69b6a9eba9d0caa3853b3dcb134951d76b145
- LTS mr11.5.1 doesn't build with system GCC 8.5 on EL8
- add a workaround for using GCC 13
Closes#1887Closes#1886
Change-Id: Ib93942fae8f754c7673509ccb45e0d08569f23f0
Addresses: #1886
For some reason gcc 10.2.1 complains about this instance with
control_ng_flags_parser.c: In function ‘parse_transports’:
control_ng_flags_parser.c:299:2: warning: missing initializer for field ‘remainder’ of ‘rtpp_pos’ [-Wmissing-field-initializers]
299 | call_ng_main_flags(&dummy_parser, &STR_CONST("transport-protocol"), &(rtpp_pos) {.cur = STR(val)}, out);
| ^~~~~~~~~~~~~~~~~~
In file included from ./log.h:7,
from ../lib/obj.h:105,
from ../include/control_ng_flags_parser.h:7,
from control_ng_flags_parser.c:1:
../include/types.h:48:6: note: ‘remainder’ declared here
48 | str remainder;
| ^~~~~~~~~
but doesn't complain about other instances of the same usage. Oh well.
Make it shut up.
Change-Id: I6989e3c63b075b6c8f258a824557b767123dc0f6
The opmode is already determined uniquely when processing the NG
command. There is no need to explicitly set it again elsewhere. Simply
carry along the originally determined opmode.
Change-Id: I16924264b0337423aff6763c70a4b2c6dd3687db
These macros were used for development only and are not needed any more.
Their names collide with an upstream patch, making compilation fail on
kernels >= 6.12. Just remove these wrapper macros altogether.
Change-Id: I6e154be76bfcfb650581095b169ddd58e5f464a0
* Added libatomic to the el/ build dependencies. This was required since
commit 741f6ac when -latomic was added to lib/common.Makefile
* Changed link to the copr repo with spandsp3. There is seperate repo
for EL9 now.
Closes#1880
Change-Id: I9ba2246bd0f2fa6f2d6196d6c66a527f5f1dd3f0
There is enough overlap between the two enums that it doesn't make sense
to carry along both. Unify.
Change-Id: I9de8fbdb8d78a2002d8c1b62cea57188c937d61d
Allow to-tag updates in answers only until a non-provisional response is
received. Add a flag to optionally suppress this feature.
Change-Id: I67110ede662f618ba5a355500d3d84050e6318cc
If we receive an answer from a to-tag that hasn't previously seen and no
corresponding monologue exists (created from a previous offer),
previously we would treat this is a separate and new call branch, create
a brand new monologue and dissociate the previous one. This may lead to
unexpected results as this new monologue has been created without the
same initialisation as was done for the original one, and so may be left
with incorrect or incomplete data (e.g. SRTP keys, codec information,
interface bindings, etc).
Improve this by treating an unexpected and unseen to-tag as an alias to
the already existing to-tag. Going forward both tags can be used
interchangeably to refer to the same monologue.
Add a flag to suppress this new behaviour, in case some situation is
made worse by it.
Change-Id: Ie8f838eebd50d29d3549031998a2eb1f610b04bb
ffmpeg 7.1+ has deprecated direct usage of ->sample_fmts in favour of a
call to avcodec_get_supported_config(). Update accordingly.
Change-Id: I0fbecbbcf52c38976f3387e34d816d11e1d09480
When re-establishing connection to redis via hostname,
at a point of time upon new re-resolve hasn't been done yet,
use a hostname for logging of failing attempts to connect,
so that it doesn't confuse users with the older IP.
For the backwards compatibility, this will still log an IP
for those setups using the IP address and not a hostname.
Change-Id: I28f9a2a194b5009040ac8ed909a65fec1f199663
When re-connecting to the remote redis server
try to re-resolve if the redist hostname
was an FQDN and not IP address.
Change-Id: Ie80e1d1a1ea76811c54123201ad4fe8cb64fc748
Refactor media level manipulations, no funcitonal change.
Just add a separate static function that does
all the job to create fictitious (zeroed) media.
Change-Id: Ifa39e31cdeaa093710cf8b834e7e08881056212f
In order to be able to control, which media types
one wants to have in the call session,
add support of the "sdp-media-remove" flag.
Syntax:
"sdp-media-remove" : ["<media-type>", "<media-type>", ...]
Additionally, add according unit tests.
Change-Id: Ic52456f8124319992ea9ca8c161daefb1df46b59
During the monologues lookup in
`call_get_dialogue()`,
instead of relying on the very first available
other side subscription, when doing a lookup
of this side, try to look into all of them
to find available media with existing subs.
Change-Id: If232cd25f26a2bc56eb1f401ba5c2c8a13e3e463
While handling offer/answer exchanges, do:
- index based lookup for sender's side (both offers and answers)
- index based lookup for receiver's side, but for offer only
- subscription based lookup for receiver's side, but for answer
Additionally: fix "media playback after delete" test,
because each new offer/answer exchange towards new branch,
means to have new via-branch value.
Change-Id: I078b7f7e58fa1aafbd8e68662f5f14ecb15b53c0
Don't unsubscribe offer from its existing
subscriptions, because it may have multiple
branched receiver's monologues, and hence medias.
Change-Id: I5caf515f35688041b684fbea9bf05ae559d43e15
When calling `__subscribe_medias_both_ways()`,
add sender to receiver, and not the other way.
This is just for simplicity of code reading
(so kinda: from -> to).
Change-Id: I7df889b7744c1fc3c1bec5016adbe6924e5396c3
Don't add session level bandwidth for subscribe requests,
because it's anyway mixing different medias from all parties
in one SDP and cannot really apply session level (so global)
bandwidth taken from one of the medias, to all medias.
Change-Id: If8fb5358cdae897ca811a3bd565d8be055e2101e