Protects against double MoH played,
e.g. when inadvertently two rtpengine instances try to trigger MoH.
This gives a clue to the current rtpengine instance,
that another one already started MoH for this call.
By default is set to false.
Change-Id: I7cc36a177b0ce1bdb64ff8b42bf31f13fb1e4c91
Allocate all bufferpool shards of the same size, regardless of
underlying allocator. This way increase memory usage a bit, but we're
already quite heavy on that, so no big deal.
Change-Id: Icbe09cd2f9b33bc58ab1efe7de293dea00236fec
Use allocators that return memory blocks aligned to the requested size,
instead of generic malloc. This makes it easier to play tricks with the
memory blocks.
Change-Id: Iad4b1127c76e48c2e9b4ad8489118d4883a24f6a
Adds a new config section that allows adjusting behaviour for certain
transcoding scenarios. This only adds the initial support for the config
option.
Change-Id: Ia3d43061adc540fab054e5c99ab804dc1ff53b84
Special codec handler to support not forwarding (nor any processing
whatsoever) of particular payload types at all. Support this in the
kernel module as well.
Change-Id: If10227affa54307e1e9b448eadd0bf2bfc5774ba
Only use the codec handler's "kernelize" flag to determine whether a
particular payload type can be handled by the kernel or not. It's
supposed to be a reliable indicator, making checking the other flags
unnecessary.
Change-Id: I5fe58eded55ea973ed555e4376ee8200f112d162
Split function into one part handling the "target" (i.e. ingress)
portion of the forwarding chain, and one function handling just the
outputs.
Change-Id: I3766da3c4bc5caee4eb6bae8978f177a83cc231a
Instead of explicitly triggering an update of subscribers for A and B
during an offer/answer, trigger it only for one side (A) and then
iterate through all subscribers and subsriptions and update them all.
This automatically triggers an update for B, as well as any other
existing subscriptions that might be affected. Use a monotonically
increading update iterator counter to track which medias have been
updated so we don't run into infinite recursion.
Change-Id: Ie2fba8ff9c5a011bbe932559ac06e1634029a091
First step to refactoring the kernelize* functions. Keep all state in a
central struct that is passed to all functions. Requires an auxiliary
bool to facilitate a case distinction in kernelize_one, which can be
removed once refactoring is complete.
Change-Id: I5de8404d55d5b320ef5cb8cd27d5b684802fa7e7
Obsolete the two flavours of packet_encoded_tx and instead distinguish
the two flavour of sequence number handling (passthrough and
self-generated) through a function pointer in the codec SSRC handler,
directly pointing to one of the two existing codec_output_rtp wrappers.
Change-Id: Ib1141413859dab37048be9b04af7a5d235b46d0a
This seems to be an acceptable and reliable way to detect RTCP
multiplexed with RTP, even if `a=rtcp-mux` wasn't advertised in the SDP.
Take the opportunity to clean up __streams_set_sinks() a bit by giving
the variables better names.
Change-Id: I0cdc5e4a544641591fc2aabca12fb11bab3453f7
Use the correct media object (the source media) to obtain media-level i=
lines from. Adapt OSRTP output function to do the same.
Change-Id: I9ba4db286cf9d822b8986a7da2cb4f4aa1c69646
... and allow non-existing HT during lookup. Also reorder cleanup
sequence. This makes managing subscriptions in codec handlers possible.
Change-Id: I9c63fde2001e9dee384872577176fdf7f3bb9699
Separate out the two distinct use cases of requesting a specific port,
and requesting (one or more) random ports.
Change-Id: Ifbe7725d8638d49f620c9f4b9445342d180c8770
Add helper functions wrapping around reserve_port which directly return
a socket_port_link object. This allows us to rework
__get_consecutive_ports and release_reserved_port to eliminate mixing
different port numbers in the same list, which makes for cleaner code.
Change-Id: Ia9808f71c854f6efd0e93ce8df4527c4aea311bd
Empty subscriptions are not supported and would be an internal bug.
Remove expectations that the contents can be NULL.
Change-Id: Ibd7b0d86e7fb147135a93316575954aca546eac2
This flag is relevant to copy the state from A to B during an
offer/answer. It should only be set on one side, not on both.
Change-Id: Ie5c6de58a4ca11b37526b719b1937ffb08ebf512
Have one function to just set flags and init a single media, and another
one to set up sink pointers
Change-Id: I3207ea9f36a0e3575c2149e077e6106fd065fe1b
Directly return the just-created subscription from the respective
function. Saves a hash table lookup.
Change-Id: I42d9c75ebae2cc92619e78badb8ac594397b614b