Skip to content

Releases: awslabs/amazon-kinesis-video-streams-webrtc-sdk-c

Release 1.18.1 of the Amazon Kinesis Video Streams WebRTC C SDK

06 May 18:29
9eebcc4

Choose a tag to compare

What's new

  • Added new cache type SIGNALING_API_CALL_CACHE_TYPE_FILE_EXCEPT_DESCRIBE_MEDIA which fetches fresh values for DescribeMediaStorageConfiguration. Updated the WebRTC Ingestion and Storage & Multiviewer samples to use this new cache type. (#2241, #2254)
  • Added new CMake option INCREASE_PRECISION_TIMING_LOGS to enable two decimal points in timing logs. (#2248)

Tip

Check the SDK documentation for additional information.

SDK changes

  • Fixed race condition in the TURN connection shutdown sequence. (#2253)
  • Fixed SDP parser by adding attribute name length check for parity with other SDP field parsers. (#2265)
  • Used dedicated max-length constants for SDP fields. (#2266, #2267)
  • Added handling for 0-length Opus frames. (#2264)
  • Fixed DTLS failure when remote SDP contains multiple fingerprint algorithms. (#2262)
  • Implemented DATA_CHANNEL_ACK to be sent when receiving DATA_CHANNEL_OPEN. (#2244)
  • Fixed an Alpine build issue in the tests. (#2258)
  • Added a new error code. (#2244)

Sample changes

  • Updated samples to use the new cache type. (#2241)
  • Added environment variable settings to configure the pre-generated RtcCertificates behavior. (#2218)

Tip

Check the README for usage information.

Dependency Updates

  • None

Developer Enhancements

  • Added new documentation and improved existing documentation. (#2218, #2241, #2248)
  • Updated the PROFILE-log parsing script to handle the new decimal format. (#2259)

Note

The development branch containing commits between this release (v1.18.1) and v1.18.0 has been archived into the release-v1.18.1 branch.

Release 1.18.0 of the Amazon Kinesis Video Streams WebRTC C SDK

31 Mar 22:35
ef46494

Choose a tag to compare

New Features

  • Added GovCloud regions support. (#2243)
  • Added stuns: URI scheme support for secure STUN (DTLS-over-UDP) server-reflexive candidate gathering. GovCloud regions now automatically use the managed FIPS stuns: endpoint. (#2243)

Note

WebRTC Ingestion and Storage & Multiviewer are currently not supported for GovCloud regions. For more information, see the launch announcement.

SDK changes

  • Enhanced ICE server URL parser with a new ICE_SERVER_SCHEME enum to properly distinguish stun:, stuns:, turn:, and turns: schemes, with improved validation and diagnostic logging. (#2243)
  • Extended SocketConnection with DTLS session support and a handshake state machine for stuns: srflx candidate gathering, including deferred teardown. (#2243)
  • Promoted tlsSessionStartWithHostname to a public TLS API function shared across OpenSSL and mbedTLS implementations. (#2243)
  • Added STATUS_ICE_URL_MALFORMED and STATUS_ICE_URL_STUNS_IP_LITERAL_NOT_ALLOWED error codes. (#2243)
  • Increased MAX_ICE_CONFIG_URI_LEN from 127 to 255. (#2243)
  • Updated control plane URL generation and early STUN DNS resolution to use FIPS service names and proper URL postfixes for GovCloud regions. (#2243)

Sample changes

  • Sample applications now automatically select stuns: endpoints for GovCloud regions. (#2243)

Dependency Updates

  • None

Developer Enhancements

  • Added .kiro/ and .SignalingCache_v* to .gitignore. (#2246)
  • Added note in README that CMake 3.x is required and 4.x is not yet supported. (#2234)

Note

The development branch containing commits between this release (v1.18.0) and v1.17.0 has been archived into the release-v1.18.0 branch.

Release 1.17.0 of the Amazon Kinesis Video Streams WebRTC C SDK

26 Feb 22:08
beb520b

Choose a tag to compare

New Features

  • Added video-only support for WebRTC Ingestion and Storage & Multiviewer. (#2222)
  • Separated existing samples into peer-to-peer (P2P) samples and WebRTC Ingestion and Storage samples. New executables are (#2224):
    • kvsWebrtcStorageAudioVideoMaster - Static frames audio+video ingestion
    • kvsWebrtcStorageVideoOnlyMaster - Static frames video-only ingestion
    • kvsWebrtcStorageAudioVideoMasterGstSample - GStreamer audio+video ingestion
    • kvsWebrtcStorageVideoOnlyMasterGstSample - GStreamer video-only ingestion

Tip

See the README for the updated sample usages.

Note

Amazon Kinesis Video Streams WebRTC Ingestion and Storage & Multiviewer does not yet support video-only mode. These changes are in preparation for the feature release which is coming soon. This note will be updated when it's ready for use.
Update 3/3/2026: video-only mode is generally available in all regions where Amazon Kinesis Video Streams is available, except eu-west-1, the AWS GovCloud (US) Regions, and the China (Beijing, operated by Sinnet) Region.
Update 4/2/2026: video-only mode is now generally available in eu-west-1 (DUB) region.

SDK changes

  • Revised SDP negotiation logic to compute direction intersection between remote offer and local transceivers to be compliant with the RFC. (#2222, #2226)
  • Added validation for transceiver direction enum, with fallback to sendrecv for invalid values. (#2223, #2225)
  • Created common functions for parsing transceiver directions and computing the intersection. (#2222, #2226)
  • Enhanced error reporting by printing signaling messages when JSON parsing fails. (#2228)
  • Corrected port number printing in log messages for both IPv4 and IPv6 addresses. (#2217)
  • Fixed a compiler warning in the tests. (#2220)

Sample changes

  • Updated directory structure under common, p2p, and webrtcstorage subdirectories. (#2224)
  • Refactored common code into reusable modules (StaticMedia.c and GstMedia.c). (#2224)
  • Updated the transceivers setup for the different samples. (#2224)

Dependency Updates

  • None

Developer Enhancements

  • Added debug utility toString function for KvsIpAddress with port. (#2217)
  • Added tests for intersection logic and the updated SDP answer generation. (#2222, #2223, #2225, #2226)

Note

The development branch containing commits between this release (v1.17.0) and v1.16.0 has been archived into the release-v1.17.0 branch.

Release 1.16.0 of the Amazon Kinesis Video Streams WebRTC C SDK

17 Feb 22:21
b639685

Choose a tag to compare

New Features

  • Added IPv6 TURN allocation support with REQUESTED-ADDRESS-FAMILY attribute. (#2194)

Tip

Enable this feature via the USE_DUAL_STACK_ENDPOINTS setting. See the README for more information.

SDK changes

  • Updated the USE_DUAL_STACK_ENDPOINTS environment variable check to use the common function included in the latest PIC version. (#2198)
  • Added KVS_DISABLE_IPV4_TURN and KVS_DISABLE_IPV6_TURN environment variables (default: OFF) to control the IP family types used for TURN connections and relay candidates. (#2198)
  • Fixed ICE server getaddrinfo fallback not working when dual-stack hostname parsing failed. (#2205)
  • Avoided busy-wait in connectionListener when no data is present. (#2213)
  • Added a log when the codec type is not supported. (#2189)
  • Updated the signaling cache to work when switching between Control Plane endpoints and Legacy/Dualstack modes. (#2199)

Note

The default signaling cache file name has been updated from .SignalingCache_v0 to .SignalingCache_v1.

Build optimizations

  • Optimized libwebsockets build by disabling examples. (#2211)
  • Optimized AWS SDK CPP build by skipping tests. (#2209)

Sample changes

  • Added environment variable to set ICE transport mode (relay/all). (#2203)
  • Added environment variable configuration for file logger. (#2212)
  • Updated the ENABLE_FILE_LOGGING environment variable check to use the common function included in the latest PIC version. (#2207)
  • Updated SignalingMessages to be zero-initialized. (#2208)
  • Enhanced error messages for GStreamer pipeline failures in master sample. (#2200)

Dependency Updates

  • Updated libkvsCommonLws from 1.6.0 to 1.6.1. (#2197)
    • Transitive: updated PIC from 1.2.0 to 1.3.1.

Developer Enhancements

  • Added GitHub action for master sample in WebRTC ingestion mode. (#2171)
  • Created Python script for log parsing and metric aggregation. (#2212)
  • Added profiling CI to generate performance metrics. (#2212)
  • Added forceTURN verification to the CI with relay-relay verification. (#2204)
  • Added CI verification of cache behavior across different endpoint configurations. (#2206)
  • Added environment variable override for Control Plane URI. (#2202)

Note

The development branch containing commits between this release (v1.16.0) and v1.15.0 has been archived into the release-v1.16.0 branch.

Release 1.15.0 of the Amazon Kinesis Video Streams WebRTC C SDK

22 Dec 22:00
057047e

Choose a tag to compare

What's New

  • Support for dual-stack KVS endpoints and IPv6 srflx (server-reflexive) ICE candidates.

SDK Changes

  • Added a USE_DUAL_STACK_ENDPOINTS environment variable check for runtime control of legacy (.amazonaws.com, .amazonaws.com.cn) vs. dual-stack (.api.aws, .api.amazonwebservices.com.cn) KVS endpoint modes. (#2181)
  • When in dual-stack endpoints mode, IPv6 srflx ICE candidates may be gathered from the KVS STUN service, if the local network supports it. (#2181)
  • Updated the ICE server parsing logic for TURN server hostnames returned from getIceServerConfig when in dual-stack mode. (#2181)

Note

To use dual-stack mode, set export USE_DUAL_STACK_ENDPOINTS=ON and ensure that there is no signaling cache file present from previous application runs caching the other endoint type (by default it is located at ./build/.SignalingCache_v0. When in dual-stack mode, the client will attempt to connect to STUN and TURN servers over both IPv4 and IPv6, however, at this time, only IPv4 TURN relay allocations will be made.

Note

IPv6 support is reliant on the capabilities of the local network and of the device/system.

Samples

  • Updated the setting of the STUN ICE server hostname to correspond to the KVS endpoint mode set by USE_DUAL_STACK_ENDPOINTS. (#2181)

Bug Fixes/Improvements

  • Updated TURN_CONNECTION_DATA_TRANSFER_MODE parameter usage in createTurnConnection. (#2188)
  • Cleaned-up duplicated code. (#2183)

Dependency Updates

  • libwebsockets is now built with IPv6 enabled (-DLWS_WITH_IPV6=ON). (#2181)
  • libkvsCommonLws version bump: v1.5.4 -> v1.6.0. (#2181)

Developer Enhancements

  • Added additional CI integration test scenarios for the USE_DUAL_STACK_ENDPOINTS=ON case. (#2181)
  • Added additional CI unit test cases for IPv6 ICE candidate handling. (#2181)
  • Upgrade Mac CI runner version from 13 to 15. (#2184)
  • Added a framework for future IPv6 relay candidate support (not currently supported, see instances of [TURN Allocation] comments). (#2181)

Note

The development branch containing commits between this release (v1.15.0) and v1.14.0 has been archived into the release-v1.15.0 branch.

Release 1.14.0 of the Amazon Kinesis Video Streams WebRTC C SDK

09 Oct 18:55
84f9430

Choose a tag to compare

What's New

MbedTLS v3 support, additional cross-platform support, and removal of unused code paths.

SDK Changes

  • N/A

Samples

  • N/A

Bug Fixes/Improvements

  • Updated opus codec mime type check to be case-insensitive, enabling the SDK to establish an opus audio transciever with remote peer requesting 'opus' configuration with different capitalization. (#2165)
  • Addressed build issues in certain compilers. (#2153, #2166, #2147, #2133)
  • Enhanced logging statements. (#2160, #2124, #2150, #2127, #2130)
  • Added error handling for jsmn_parse errors. (#2150, #2127)
  • Removed TURN server details parsing from signaling message parsing logic. (#2150)
  • Updated TURN server parsing to extract the first MAX_ICE_CONFIG_COUNT TURN servers instead of returning an error if there are more than MAX_ICE_CONFIG_COUNT servers. (#2127)
  • Addressed undefined behavior sanitizer warnings. (#2131)
  • Updated the way the CA certificate is passed to LWS. (#2149)
  • Updated the way the CA certificate is passed to MbedTLS. (#2113)
  • Corrected the sample frames count for H.265 to use the H.265 macro. (#2135)
  • Adjusted the default FMTP for H.265 (used in viewer mode) to be compatible with Chrome 136. (#2138)
  • Removed the TURN server IP address parsing optimization for STUN servers. (#2125)
  • Updated Include_i.h imports. (#2124)
  • Added missing null check in resendPacketOnNack(). (#2155)
  • Fixed a typo in the lastPacketReceivedTimestamp description comment. (#2173)

Dependency Updates

  • Updated MbedTLS v2.28.8 to v3.6.3. (#2112)
    • Added a new CMake flag: -DBUILD_OLD_MBEDTLS_VERSION=ON (default: OFF) to use the older v2.28.8 version. (#2112)

Caution

MbedTLS v2 is past end of life and we do not recommend using it.

  • Updated libwebsockets (LWS) v4.3.3 to v4.3.5. (#2112)

Developer Enhancements

Note

The development branch containing commits between this release (v1.14.0) and v1.12.1 has been archived into the release-v1.14.0 branch.

Release 1.12.1 of the Amazon Kinesis Video Streams WebRTC C SDK

07 May 20:14
cf817bc

Choose a tag to compare

What's New

  • Additional compatibility verification and enhanced CI

SDK Changes

  • Increased the size of the signaling message buffer to accomodate for larger signaling messages. (#2126)

Note

Chrome 136 added H.265 support, thereby increasing the size of the SDP which may exceed the signaling limits.

Samples

  • Fixed the H.265 sample frames that were frozen at the 10s mark in certain players. (#2111)

Bug Fixes/Improvements

  • Fixed an issue where the TWCC processor would get stuck in an infinite loop due to an integer promotion. (#2101)
  • Disabled libWebsockets logs when the KVS log level is set to LOG_LEVEL_SILENT. (#2118)
  • Fixed a compiler warning in getNatBehavior (#2114)

Developer Enhancements

  • Added 32 new Linux cross-compilation combinations to the CI. Including [mips-32, arm-32, arm-64, and aarch-64] architectures (4), [shared, static] builds (2), [openssl, mbedtls] crypto libraries used (2), and [on, off] KVS threadpool (2). (#2091)
  • Added a cleanup script to delete Streams and Channel resources created by the tests. (#2117)
  • Added stability enhancements for the CI. (#2116)
  • Used multiple cores to reduce CI times. (#2116)
  • Configured shallow clones to reduce the disk space and network bandwidth used to build the SDK. (#2117)

Note

The development branch containing commits between this release (v1.12.1) and v1.12.0 has been archived into the release-v1.12.1 branch.

Release 1.12.0 of the Amazon Kinesis Video Streams WebRTC C SDK

17 Dec 21:17
339f24f

Choose a tag to compare

Summary

Memory size reduction

  • This release focuses primarily on memory footprint improvements and additional configurability.

Key highlights include:

  • Reduced memory usage through optimized data structures and heap allocation.
  • Added a new optional API for applications to configure the outbound transceiver's rolling buffer size.
  • Made ICE stats calculations optional for improved performance.

What's New

  • Added a new optional API configureTransceiverRollingBuffer to reduce the size of each transciever's RTP packet store from the default. (#2077)
    • Updated the kvsWebrtcMaster.c sample application's rolling buffer configuration using the new configureTransceiverRollingBuffer API to fit the bitrate required by the included sample frames. (#2089)

Tip

For additional configureTransceiverRollingBuffer details, refer to Controlling RTP rolling buffer capacity in the ReadMe.

SDK Changes

  • Implemented new API configureTransceiverRollingBuffer. (#2077)
  • Moved the TWCC packet store and TWCC packets from the stack to the heap and reduced the store size. (#2075)
  • Changed the underlying TWCC packet store implementation from an array to a hashTable. (#2075)
  • Moved the remote description (SDP offer when this SDK is used as master) from the stack to the heap and shortened its lifetime between the session establishment. (#2070)
  • Reduced the size of stats-related strings. (#2079)
  • Reduced the size of hashTables holding codecs for SDP construction. (#2067)
  • Added option to disable ICE stats calculations. (#2074)
  • Moved SDK-internal ICE stat structs from the stack to the heap. (#2074)

Samples

  • Disabled ICE stats calculation by default if ENABLE_STATS_CALCULATION_CONTROL is present. (#2074)
  • Changed the log level of metrics logs from DEBUG to INFO. (#2074)
  • kvsWebrtcMaster.c: Reduced the size of RTP rolling buffers, using the new configureTransceiverRollingBuffer API, to the bitrate required by the sample frames, demonstrating the potential memory savings. (#2089)

Bug Fixes/Improvements

  • Fixed duplicate nack pli line in the SDP generation for H.264. (#2082)
  • Added missing rtcp-fb line in the SDP generation for H.265. (#2082)
  • Added missing ENTERS(), LEAVES(), and CHK_LOG_ERR() in PeerConnection.c. (#2070)

Build Changes

Added CMake flags:

  • -DENABLE_STATS_CALCULATION_CONTROL to enable the option to disable ICE stats calculation. (#2074)
  • -DKVS_STACK_SIZE to set the stack size configuration. (#2073)

Tip

Refer to the README for additional details for these build options.

Dependency Updates

  • The libkvsCommonLws version has been updated from 1.5.3 to 1.5.4. (#2073)
  • Transitive: The PIC version has been updated from 1.1.0 to 1.2.0.

Developer Enhancements

  • Revised the Git clone command in the README to avoid cloning extra branches.
    • Reduced disk space from about 700 MB to about 30 MB when cloning the SDK repository. (#2083)
  • Added a new action that runs kvsWebrtcClientMaster and kvsWebrtcClientViewer with valgrind. (#2071)

Note

The development branch containing commits between this release (v1.12.0) and v1.11.0 has been archived into the release-v1.12.0 branch.

Release 1.11.0 of the Amazon Kinesis Video WebRTC C SDK

04 Oct 00:32
30f52d1

Choose a tag to compare

Summary

Important

With this release, the previously reported issue (#2038) concerning TURN connections has not been observed.

Time to First Frame (TTFF) Improvements

  • This release has been tested for TTFF across a diverse range of platforms, including System-on-Chips (SoCs), operating systems, and network topologies (STUN/TURN). Our SDK sample applications, including camera, web browsers, and mobile viewers, were used for these tests. We observed an average improvement of 15-30% in TTFF without impacting other performance indicators, such as connection success rate.

Note

The performance metrics provided are based on testing in controlled environments. It is important to note that the actual performance, specifically the time between sending the offer and rendering the first frame, may vary based on factors such as bandwidth availability, latency, packet loss, and the crypto libraries used (MbedTLS or OpenSSL).

Added Support for H.265 Codec

  • More details on running the SDK with H.265 can be found in the README.

What's New

Note

These features include changes from 1.10.0, 1.10.1 and 1.10.2.

SDK Changes

  • TTFF enhancements:
    • With threadpool:
      • STUN ICE server DNS resolution is performed asynchronously. (#1812)
      • With OpenSSL, DTLS handshake doesn't use the timer queue interval. (#1824)
    • Performed DTLS handshake after ICE nomination. (#1824)
    • Added further transition checks for the ICE and TURN state machines. (#1825)
  • H.265 media transmission support. (#1965)
  • Added new error codes. (#1824, #1829, #1854, #1896)
  • Added new state machines: DTLS (for OpenSSL path) (#1824) and TURN (#1825)
  • Added profiling and modified timeouts on ICE/TURN states to increase the connection success rate in constrained network conditions. (#1824, #1896)
  • Windows:
    • Added filtering on non-operation network interfaces. (#1937)

Samples

  • Added option to use H.265 codec for video. (#1965)
  • Added new sample (kvsWebrtcClientViewerGstSample) that writes media received from the master to the disk. (#1963)
  • Master samples:
    • Send data channel message for the TTFF JS viewer timeline visualization, See Readme for details. (#1846)
  • kvsWebRTCClientMasterGstSample:
    • Added simple implementation of adaptive bitrate based on the detected packet loss percentage. (#1957)

Bug Fixes/Improvements

  • Fixed trickle ICE to be session- and media-level instead of only a media-level attribute. (#1813)
  • Windows:
    • Fixed signaling cache file creation. (#1935)
  • Master samples:
    • Fixed sending frames too early before SRTP is ready. (#1833)

Build Changes

  • Fixed static build issues for libkvsCommonLws and kvsWebRtcThreadpool libraries. (commit)
  • Added support for the Release/Debug build option for both MbedTLS and usrsctp dependencies. (#1897)
  • Fixed linking to the kvsWebRtcThreadpool library when the kvsWebRtcThreadpool option is enabled during the build process. (commit)
  • Added CMake option (-DIOT_CORE_ENABLE_CREDENTIALS) to build the samples using IoT credentials mode, with Readme instructions on how to use IoT Credentials in the KVS WebRTC SDK. (#2056)
  • Added CMake option (-DKVS_CA_CERT_PATH) to specify the path to the CA certificate. (commit1, commit2)

Dependency Updates

  • The libwebsockets version has been updated from 4.2.2 to 4.3.3. (#1820)
    • Build changes have been added for libwebsockets on MIPS32 with old compilers (needed for GCC 5.4 cross-toolchain with uclibc). (commit)
  • The libkvsCommonLws version has been updated from 1.5.1 to 1.5.3. (#2018)
    • To resolve issue #1804.
  • The MbedTLS version has been updated from 2.25.0 to 2.28.8. (commit)
    • Build changes have been added for compiler errors with MbedTLS on Mac computers with Apple silicon chips. (commit)

Known Issues

  • Compiler warnings during build regarding pointer casting across different platforms.

Release 1.10.2 of the Amazon Kinesis Video WebRTC C SDK

09 May 00:24
4f1d3ad

Choose a tag to compare

WARNING: This release is known to be affected by an issue with TURN connections as reported in Issue #2038

What’s new:

  • Added support for H.265 codec. More details on running the SDK with H.265 can be found in the README (#1965)

Sample improvements:

  • Added a sample TWCC callback implementation that demonstrates packet loss based bitrate change in the sample WebRTC GStreamer master pipeline. More details on TWCC can be found in the README (#1957)
  • Introduced WebRTC GStreamer viewer sample that writes media received from the master to the disk (#1963)

Tested H.265 codec support by running C SDK as master with the following viewers:

Additional Notes:

  • H265 support is limited in browsers and on Android/iOS devices. If these environments are used for testing, please first ensure that H265 support is enabled and available for them.