https://github.com/awslabs/amazon-kinesis-video-streams-rtcp

https://github.com/awslabs/amazon-kinesis-video-streams-rtcp

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.7%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: awslabs
  • License: apache-2.0
  • Language: C
  • Default Branch: main
  • Size: 146 KB
Statistics
  • Stars: 2
  • Watchers: 7
  • Forks: 4
  • Open Issues: 0
  • Releases: 0
Created almost 2 years ago · Last pushed 11 months ago
Metadata Files
Readme Contributing License Code of conduct

README.md

amazon-kinesis-video-streams-rtcp

The goal of this library is to provide Real-Time Transport Control Protocol (RTCP) serialization and deserialization functionalities. The library supports creating and parsing the following RTCP packets: * Sender Reports (SR). * Receiver Reports (RR). * Full Intra Request (FIR). * Picture Loss Indication (PLI). * Slice Loss Indication (SLI). * Negative Acknowledgement (NACK) report. * Receiver Estimated Maximum Bitrate (REMB) report. * Transport-Wide Congestion Control (TWCC) report.

What is RTCP

Real-Time Transport Control Protocol (RTCP), as defined in RFC 3550, is a Control Protocol, to allow monitoring of transmission statistics, quality of service and to provide control information for RTP streams.

An RTCP packet consists of a common header followed by structured data specific to the RTCP packet type.

``` RTCP Header:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V=2|P| FMT | PT | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

```

Using the library

Serializer

  1. Call Rtcp_Init() to initialize the RTCP Context.
  2. Populate RtcpSenderReport_t or RtcpReceiverReport_t with the report data to be sent out.
  3. Call Rtcp_SerializeSenderReport() or Rtcp_SerializeReceiverReport() to serialize the RTCP report.

Deserializer

  1. Call Rtcp_Init() to initialize the RTCP Context.
  2. Pass the serialized packet, received over the wire, to the Rtcp_DeserializePacket() to deserialize the packet.
  3. Use one of the following APIs to further parse the deserialized packet according to the value of RtcpPacket_t.header.packetType:
    • Use Rtcp_ParseSenderReport() to parse the Sender Report (SR).
    • Use Rtcp_ParseReceiverReport() to parse the Receiver Report (RR).
    • Use Rtcp_ParseFirPacket() to parse the Full Intra Request (FIR).
    • Use Rtcp_ParsePliPacket() to parse the Picture Loss Indication (PLI).
    • Use Rtcp_ParseSliPacket() to parse the Slice Loss Indication (SLI).
    • Use Rtcp_ParseRembPacket() to parse the Receiver Estimated Maximum Bitrate (REMB) report.
    • Use Rtcp_ParseNackPacket() to parse the Negative Acknowledgement (NACK) report.
    • Use Rtcp_ParseTwccPacket() to parse the Transport-Wide Congestion Control (TWCC) report.

Building Unit Tests

Platform Prerequisites

  • For running unit tests:
    • C99 compiler like gcc.
    • CMake 3.13.0 or later.
    • Ruby 2.0.0 or later (It is required for the CMock test framework that we use).
  • For running the coverage target, gcov and lcov are required.

Checkout CMock Submodule

By default, the submodules in this repository are configured with update=none in .gitmodules to avoid increasing clone time and disk space usage of other repositories.

To build unit tests, the submodule dependency of CMock is required. Use the following command to clone the submodule:

sh git submodule update --checkout --init --recursive test/CMock

Steps to Build Unit Tests

  1. Run the following command from the root directory of this repository to generate Makefiles:

sh cmake -S test/unit-test -B build/ -G "Unix Makefiles" \ -DCMAKE_BUILD_TYPE=Debug \ -DBUILD_CLONE_SUBMODULES=ON \ -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG'

  1. Run the following command to build the unit tests: sh cd build && make

Steps to Generate Code Coverage Report and Run Unit Tests

  1. Build Unit Tests as described in Steps to Build Unit Tests.
  2. Generate coverage report in the build/coverage folder:

cd build && make coverage

Script to Run Unit Test and Generate Code Coverage Report

sh cmake -S test/unit-test -B build/ -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -Werror -DNDEBUG -DLIBRARY_LOG_LEVEL=LOG_DEBUG' cd build && make coverage

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Owner

  • Name: Amazon Web Services - Labs
  • Login: awslabs
  • Kind: organization
  • Location: Seattle, WA

AWS Labs

GitHub Events

Total
  • Push event: 7
  • Pull request review comment event: 4
  • Pull request review event: 27
  • Pull request event: 10
Last Year
  • Push event: 7
  • Pull request review comment event: 4
  • Pull request review event: 27
  • Pull request event: 10

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: about 2 months
  • Total issue authors: 0
  • Total pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: about 2 months
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Varunaditya1 (1)
Pull Request Authors
  • Varunaditya1 (10)
  • aggarg (2)
  • moninom1 (2)
Top Labels
Issue Labels
Pull Request Labels