|
SmolRTSP 0.2.0
A small, portable, extensible RTSP 1.0 implementation in C99
|
An RTP data transport. More...
#include <smolrtsp/droppable.h>#include <smolrtsp/transport.h>#include <stdbool.h>#include <stdint.h>#include <datatype99.h>#include <slice99.h>#include <smolrtsp/priv/compiler_attrs.h>

Go to the source code of this file.
Typedefs | |
| typedef struct SmolRTSP_RtpTransport | SmolRTSP_RtpTransport |
| An RTP data transport. | |
Functions | |
| datatype99 (SmolRTSP_RtpTimestamp,(SmolRTSP_RtpTimestamp_Raw, uint32_t),(SmolRTSP_RtpTimestamp_SysClockUs, uint64_t)) | |
| An RTP timestamp. | |
| SmolRTSP_RtpTransport * | SmolRTSP_RtpTransport_new (SmolRTSP_Transport t, uint8_t payload_ty, uint32_t clock_rate) SMOLRTSP_PRIV_MUST_USE |
Creates a new RTP transport from the underlying level-4 protocol t. | |
| SmolRTSP_RtpTransport * | SmolRTSP_RtpTransport_new_with_ssrc (SmolRTSP_Transport t, uint8_t payload_ty, uint32_t clock_rate, uint32_t ssrc) SMOLRTSP_PRIV_MUST_USE |
| Like SmolRTSP_RtpTransport_new but uses an explicit SSRC instead of a randomly generated one. | |
| int | SmolRTSP_RtpTransport_send_packet (SmolRTSP_RtpTransport *self, SmolRTSP_RtpTimestamp ts, bool marker, U8Slice99 payload_header, U8Slice99 payload) SMOLRTSP_PRIV_MUST_USE |
| Sends an RTP packet. | |
| declImplExtern99 (SmolRTSP_Droppable, SmolRTSP_RtpTransport) | |
| Implements SmolRTSP_Droppable_IFACE for SmolRTSP_RtpTransport. | |
| bool | SmolRTSP_RtpTransport_is_full (SmolRTSP_RtpTransport *self) |
| uint32_t | SmolRTSP_RtpTransport_ssrc (SmolRTSP_RtpTransport *self) SMOLRTSP_PRIV_MUST_USE |
Returns the Synchronization Source (SSRC) identifier used by self on every RTP packet it sends. | |
| uint32_t | SmolRTSP_RtpTransport_pkt_count (SmolRTSP_RtpTransport *self) SMOLRTSP_PRIV_MUST_USE |
Returns the total number of RTP data packets successfully transmitted by self since it was created. | |
| uint32_t | SmolRTSP_RtpTransport_octet_count (SmolRTSP_RtpTransport *self) SMOLRTSP_PRIV_MUST_USE |
Returns the total number of payload octets (i.e., not including the RTP header or padding) successfully transmitted by self since it was created. | |
| uint32_t | SmolRTSP_RtpTransport_last_rtp_ts (SmolRTSP_RtpTransport *self) SMOLRTSP_PRIV_MUST_USE |
| Returns the RTP timestamp (already in the wire/clock-rate domain) that was placed in the most recently transmitted RTP packet's header. | |
An RTP data transport.
| datatype99 | ( | SmolRTSP_RtpTimestamp | , |
| (SmolRTSP_RtpTimestamp_Raw, uint32_t) | , | ||
| (SmolRTSP_RtpTimestamp_SysClockUs, uint64_t) | |||
| ) |
An RTP timestamp.
Raw – The value to be assigned to SmolRTSP_RtpHeader.timestamp without further conversion.SysClockUs – The timestamp value in microseconds derived from a system clock (e.g., clock_gettime). It should be used when a raw timestamp cannot be computed, as typically occurs with real-time video.See Datatype99 for the macro usage.
| declImplExtern99 | ( | SmolRTSP_Droppable | , |
| SmolRTSP_RtpTransport | |||
| ) |
Implements SmolRTSP_Droppable_IFACE for SmolRTSP_RtpTransport.
See Interface99 for the macro usage.
| uint32_t SmolRTSP_RtpTransport_last_rtp_ts | ( | SmolRTSP_RtpTransport * | self | ) |
Returns the RTP timestamp (already in the wire/clock-rate domain) that was placed in the most recently transmitted RTP packet's header.
Zero if no packet has been transmitted yet.
Maps to the "RTP timestamp" field of an RTCP Sender Report (RFC 3550 §6.4.1) — the SR must carry an RTP timestamp in the same domain as the data packets so a receiver can correlate the SR's NTP/RTP pair against frames. Using a separately-computed rtp_ts (e.g. "ticks since SETUP") yields wall-clock estimates that drift by the gap between the two clock origins.
self != NULL | SmolRTSP_RtpTransport * SmolRTSP_RtpTransport_new | ( | SmolRTSP_Transport | t, |
| uint8_t | payload_ty, | ||
| uint32_t | clock_rate | ||
| ) |
Creates a new RTP transport from the underlying level-4 protocol t.
| [in] | t | The level-4 protocol (such as TCP or UDP). |
| [in] | payload_ty | The RTP payload type. The list of payload types is available here: https://en.wikipedia.org/wiki/RTP_payload_formats. |
| [in] | clock_rate | The RTP clock rate of payload_ty (HZ). |
t.self && t.vptr rand PRNG must be set up via srand. | SmolRTSP_RtpTransport * SmolRTSP_RtpTransport_new_with_ssrc | ( | SmolRTSP_Transport | t, |
| uint8_t | payload_ty, | ||
| uint32_t | clock_rate, | ||
| uint32_t | ssrc | ||
| ) |
Like SmolRTSP_RtpTransport_new but uses an explicit SSRC instead of a randomly generated one.
Useful when the caller needs the RTP stream's SSRC to match an externally-chosen identifier — e.g. an RTCP Sender Report constructed elsewhere, or a multi-stream pipeline that pins SSRCs by configuration.
The plain SmolRTSP_RtpTransport_new is equivalent to calling this with (uint32_t)rand() as the SSRC.
| [in] | t | The level-4 protocol (such as TCP or UDP). |
| [in] | payload_ty | The RTP payload type. |
| [in] | clock_rate | The RTP clock rate of payload_ty (Hz). |
| [in] | ssrc | The SSRC identifier to use for every RTP packet. |
t.self && t.vptr | uint32_t SmolRTSP_RtpTransport_octet_count | ( | SmolRTSP_RtpTransport * | self | ) |
Returns the total number of payload octets (i.e., not including the RTP header or padding) successfully transmitted by self since it was created.
Maps to the "sender's octet count" field of an RTCP Sender Report (RFC 3550 §6.4.1).
self != NULL | uint32_t SmolRTSP_RtpTransport_pkt_count | ( | SmolRTSP_RtpTransport * | self | ) |
Returns the total number of RTP data packets successfully transmitted by self since it was created.
Maps to the "sender's packet count" field of an RTCP Sender Report (RFC 3550 §6.4.1).
self != NULL | int SmolRTSP_RtpTransport_send_packet | ( | SmolRTSP_RtpTransport * | self, |
| SmolRTSP_RtpTimestamp | ts, | ||
| bool | marker, | ||
| U8Slice99 | payload_header, | ||
| U8Slice99 | payload | ||
| ) |
Sends an RTP packet.
| [out] | self | The RTP transport for sending this packet. |
| [in] | ts | The RTP timestamp for this packet. |
| [in] | marker | The RTP marker flag. |
| [in] | payload_header | The payload header. Can be U8Slice99_empty(). |
| [in] | payload | The payload data. |
self != NULLerrno appropriately, 0 on success. | uint32_t SmolRTSP_RtpTransport_ssrc | ( | SmolRTSP_RtpTransport * | self | ) |
Returns the Synchronization Source (SSRC) identifier used by self on every RTP packet it sends.
Useful when constructing an RTCP Sender Report (see SmolRTSP_RtcpSr in <smolrtsp/types/rtcp.h>) that needs to carry the matching SSRC so receivers can pair the SR with the RTP stream per RFC 3550 §6.4.1.
self != NULL