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
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
Metadata Files
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
- Call
Rtcp_Init()to initialize the RTCP Context. - Populate
RtcpSenderReport_torRtcpReceiverReport_twith the report data to be sent out. - Call
Rtcp_SerializeSenderReport()orRtcp_SerializeReceiverReport()to serialize the RTCP report.
Deserializer
- Call
Rtcp_Init()to initialize the RTCP Context. - Pass the serialized packet, received over the wire, to the
Rtcp_DeserializePacket()to deserialize the packet. - 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.
- Use
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
- 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'
- Run the following command to build the unit tests:
sh cd build && make
Steps to Generate Code Coverage Report and Run Unit Tests
- Build Unit Tests as described in Steps to Build Unit Tests.
- Generate coverage report in the
build/coveragefolder:
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
- Website: http://amazon.com/aws/
- Repositories: 914
- Profile: https://github.com/awslabs
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)