If we renegotiate, then it is currently possible for an added stream to
be added to webrtcbin before the SDP is complete. This causes an
internal inconsistency as there is a 'pending sink transceiver' without
a corresponding media section in the sdp. It also does not have an
associated transport stream and will fail in _connect_input_stream().
If both data channels become ready simultaneously, then the two integer
read-add-update cycles can execute concurrently and only ever increment
once instead of the required twice. Use an atomic add instead.
It is very possible for badly behaving signalling or peers to send
us ICE candidates before we receive an SDP. While we had consideration
for that on the first set SDP, subsequent SDP's could result in
misconfigured ICE transports. Expand the previous code to also take
into account reconfigurations.
Limitations:
- No transport changes at all (ICE, DTLS)
- Codec changes are untested and probably don't work
- Stream removal doesn't remove transports (i.e. non-bundled transports
will stay around until webrtcbin is shutdown)
- Unified Plan SDP only. No Plan-B support.
Currently, if one was to set -Dhls-crypto to either libgcrypt or openssl
instead of auto, the following lines would fail because hls_crypto_dep is not
yet set:
if not hls_crypto_dep.found() and ['auto', 'libgcrypt'].contains(hls_crypto)
if not hls_crypto_dep.found() and ['auto', 'openssl'].contains(hls_crypto)
Instead, change "if not hls_crypto_dep.found()" to "if not have_hls_crypto"
which fixes the error.
Use a timeout to limit that amount of time we wait after the compositor
for the initial configure event. Compositor are support to emit a
configure event before any wl_buffer can be attached. The problem is
that Weston strongly enforce this, while gnome-shell simply does not
emit such an event.
All DRM ioctl uses errno to report the error and simply returns -1
when some error occured. This patch fixes all usage of the return
value instead of errno to trace the error type and moves to g_strerror
instead of string.h strerror in order to be consistent with the rest
of GStreamer.
This might be necessary temporarily for changing the previous settings.
Make it an actual error if the settings are like this while processing a
buffer.
When buffer is used by compositor, we don't need attach it and hold one
more reference. Just check used_by_compositor, just return if it is true.
Assert error log is not need, this is normal behavior.
It is parsing frame data and so should check the data size against the
frame header size instead of the file header size. If don't, it is
possible to drop the last frame because IVF_FILE_HEADER_SIZE is greater
than IVF_FRAME_HEADER_SIZE
This patchs add support for configuring the bonding method used. There is
two method specified
- redundant: All the RTP packets are replicated
- combined: RTP packet are evenly distributed over each links
Additionally, an application can set the "dispatcher" property in order
to implement custom dispatching method. Whenever the "dispatcher"
property is set, "bonding-method" property will be ignored.
As we can now have multiple sessions, stats need to be implemented per
session. This follow RTPSession model with sources. The stats are now:
dropped: 0
received: 0
recovered: 0
permanently-lost: 0
duplicates: 0
retransmission-requests-sent: 0
rtx-roundtrip-time: 0
session-stats:
session-id=0
rtp-from=""
rtcp-from=""
dropped=0
received=0
session-id=1
rtp-from=""
rtcp-from=""
dropped=0
received=0
. . .
session-stats is a GValueArray as there is no better alternatives.
As we can now have multiple sessions, stats need to be implemented per
session. This follow RTPSession model with sources. The stats are now:
sent-original-packets: 0
sent-retransmitted-packets: 0
session-stats:
session-id=0
sent-original-packets=0
sent-retransmitted-packets=0
round-trip-time=0
session-id=1
sent-original-packets=0
sent-retransmitted-packets=0
round-trip-time=0
. . .
session-stats is a GValueArray as there is no better alternatives.