Changelog

0.9.21

DTLS

  • Call SSL_CTX_set_ecdh_auto for OpenSSL 1.0.2.

Media

Examples

  • aiortc.contrib.media.MediaPlayer : release resources (e.g. webcam) when the player stops.
  • aiortc.contrib.signaling.ApprtcSignaling : make AppRTC signaling available for more examples.
  • datachannel-cli : make uvloop optional.
  • videostream-cli : animate the flag with a wave effect.
  • webcam : explicitly set frame rate to 30 fps.

0.9.20

Data channels

  • Support out-of-band negotiation and custom channel id.

Documentation

  • Fix documentation build by installing crc32c instead of crcmod.

Examples

0.9.19

Data channels

  • Do not raise congestion window when it is not fully utilized.
  • Fix Highest TSN Newly Acknowledged logic for striking lost chunks.
  • Do not limit congestion window to 120kB, limit burst size instead.

Media

  • Skip RTX packets with an empty payload.

Examples

  • apprtc : make the initiator send messages using an HTTP POST instead of WebSocket.
  • janus : new example to connect to the Janus WebRTC server.
  • server : add cartoon effect to video transforms.

0.9.18

DTLS

  • Do not use DTLSv1_get_timeout after DTLS handshake completes.

Data channels

  • Add setter for RTCDataChannel.bufferedAmountLowThreshold.
  • Use crc32c package instead of crcmod, it provides better performance.
  • Improve parsing and serialization code performance.
  • Disable logging code if it is not used to improve performance.

0.9.17

DTLS

  • Do not bomb if SRTP is received before DTLS handshake completes.

Data channels

  • Implement unordered delivery, so that the ordered option is honoured.
  • Implement partial reliability, so that the maxRetransmits and maxPacketLifeTime options are honoured.

Media

  • Put all tracks in the same stream for now, fixes breakage introduced in 0.9.14.
  • Use case-insensitive comparison for codec names.
  • Use a=msid attribute in SDP instead of SSRC-level attributes.

Examples

  • server : make it possible to select unreliable mode for data channels.
  • server : print the round-trip time for data channel messages.

0.9.16

DTLS

  • Log OpenSSL errors if the DTLS handshake fails.
  • Fix DTLS handshake in server mode with OpenSSL < 1.1.0.

Examples

  • server : make it possible to force audio codec.
  • server : shutdown cleanly on Chrome which lacks RTCRtpTransceiver.stop().

0.9.15

Data channels

  • Emit a warning if the crcmod C extension is not present.

Media

  • Support subsequent offer / answer exchanges.
  • Route RTCP parameters to RTP receiver and sender independently.
  • Fix a regression when the remote SSRC are not known.
  • Fix VP8 descriptor parsing errors detected by fuzzing.
  • Fix H264 descriptor parsing errors detected by fuzzing.

0.9.14

Media

  • Add support for RTX retransmission packets.
  • Fix RTP and RTCP parsing errors detected by fuzzing.
  • Use case-insensitive comparison for hash algorithm in SDP, fixes interoperability with Asterisk.
  • Offer NACK PLI and REMB feedback mechanisms for H.264.

0.9.13

Data channels

  • Raise an exception if RTCDataChannel.send() is called when readyState is not ‘open’.
  • Do not use stream sequence number for unordered data channels.

Media

  • Set VP8 target bitrate according to Receiver Estimated Maximum Bandwidth.

Examples

  • Correctly handle encoding in copy-and-paste signaling.
  • server : add command line options to use HTTPS.
  • webcam : add command line options to use HTTPS.
  • webcam : add code to open webcam on OS X.

0.9.12

  • Rework code in order to facilitate garbage collection and avoid memory leaks.

0.9.11

Media

  • Make AudioStreamTrack and VideoStreamTrack produce empty frames more regularly.

Examples

  • Fix a regession in copy-and-paste signaling which blocked the event loop.

0.9.10

Peer connection

  • Send raddr and rport parameters for server reflexive and relayed candidates. This is required for Firefox to accept our STUN / TURN candidates.
  • Do not raise an exception if ICE or DTLS connection fails, just change state.

Media

  • Revert to using asyncio’s run_in_executor to send data to the encoder, it greatly reduces the response time.
  • Adjust package requirements to accept PyAV < 7.0.0.

Examples

  • webcam : force Chrome to use “unified-plan” semantics to enabled addTransceiver.
  • aiortc.contrib.media.MediaPlayer : don’t sleep at all when playing from webcam. This eliminates the constant one-second lag in the webcam demo.

0.9.9

Warning

aiortc now uses PyAV’s AudioFrame and VideoFrame classes instead of defining its own.

Media

Examples

0.9.8

Media

  • Add support for H.264 video, a big thank you to @dsvictor94!
  • Add support for sending Receiver Estimate Maximum Bitrate (REMB) feedback.
  • Add support for parsing / serializing more RTP header extensions.
  • Move each media encoder / decoder its one thread instead of using a thread pool.

Statistics

Examples

0.9.7

Media

  • Make RemoteStreamTrack emit an “ended” event, to simplify shutting down media consumers.
  • Add RemoteStreamTrack.readyState property.
  • Handle timestamp wraparound on sent RTP packets.

Packaging

  • Add a versioned dependency on cffi>=1.0.0 to fix Raspberry Pi builds.

0.9.6

Data channels

  • Optimize reception for improved latency and throughput.

Media

Examples

  • datachannel-cli: display ping/pong roundtrip time.

0.9.5

Media

  • Make it possible to add multiple audio or video streams.
  • Implement basic RTP video packet loss detection / retransmission using RTCP NACK feedback.
  • Respond to Picture Loss Indications (PLI) by sending a keyframe.
  • Use shorter MID values to reduce RTP header extension overhead.
  • Correctly shutdown and discard unused transports when using BUNDLE.

Examples

  • server : make it possible to save received video to an AVI file.

0.9.4

Peer connection

  • Add support for TURN over TCP.

Examples

  • Add media and signaling helpers in aiortc.contrib.
  • Fix colorspace OpenCV colorspace conversions.
  • apprtc : send rotating image on video track.

0.9.3

Media

  • Set PictureID attribute on outgoing VP8 frames.
  • Negotiate and send SDES MID header extension for RTP packets.
  • Fix negative packets_lost encoding for RTCP reports.

0.9.2

Data channels

  • Numerous performance improvements in congestion control.

Examples

  • datachannel-filexfer: use uvloop instead of default asyncio loop.

0.9.1

Data channels

  • Revert making RTCDataChannel.send a coroutine.

0.9.0

Media

  • Enable post-processing in VP8 decoder to remove (macro) blocks.
  • Set target bitrate for VP8 encoder to 900kbps.
  • Re-create VP8 encoder if frame size changes.
  • Implement jitter estimation for RTCP reports.
  • Avoid overflowing the DLSR field for RTCP reports.
  • Raise video jitter buffer size.

Data channels

  • BREAKING CHANGE: make RTCDataChannel.send a coroutine.
  • Support spec-compliant SDP format for datachannels, as used in Firefox 63.
  • Never send a negative advertised_cwnd.

Examples

  • datachannel-filexfer: new example for file transfer over a data channel.
  • datachannel-vpn: new example for a VPN over a data channel.
  • server: make it possible to select video resolution.

0.8.0

Media

  • Align VP8 settings with those used by WebRTC project, which greatly improves video quality.
  • Send RTCP source description, sender report, receiver report and bye packets.

Examples

  • server:
    • make it possible to not transform video at all.
    • allow video display to be up to 1280px wide.
  • videostream-cli:
    • fix Python 3.5 compatibility

Miscellaneous

  • Delay logging string interpolation to reduce cost of packet logging in non-verbose mode.

0.7.0

Peer connection

Media

Data channels

  • Clean up aiortc.RTCDataChannel shutdown sequence.
  • Support receiving an SCTP RE-CONFIG to raise number of inbound streams.

Examples

  • server:
    • perform some image processing using OpenCV.
    • make it possible to disable data channels.
    • make demo web interface more mobile-friendly.
  • apprtc:
    • automatically create a room if no room is specified on command line.
    • handle bye command.

0.6.0

Peer connection

  • Make it possible to specify one STUN server and / or one TURN server.
  • Add BUNDLE support to use a single ICE/DTLS transport for multiple media.
  • Move media encoding / decoding off the main thread.

Data channels

Examples

  • Add an example of how to connect to appr.tc.
  • Capture audio frames to a WAV file in server example.
  • Show datachannel open / close events in server example.