RTP Over QUIC (RoQ) stack. More...
Data Structures | |
struct | imquic_roq_packet |
Typedefs | |
typedef struct imquic_roq_packet | imquic_roq_packet |
Functions | |
void | imquic_roq_init (void) |
Initialize the native RoQ stack at startup. | |
void | imquic_roq_deinit (void) |
Uninitialize the native RoQ stack. | |
void | imquic_roq_new_connection (imquic_connection *conn, void *user_data) |
Callback the core invokes when a new QUIC connection using RoQ is available. | |
void | imquic_roq_stream_incoming (imquic_connection *conn, uint64_t stream_id, uint8_t *bytes, uint64_t offset, uint64_t length, gboolean complete) |
Callback the core invokes when there's new incoming data on a STREAM . | |
void | imquic_roq_datagram_incoming (imquic_connection *conn, uint8_t *bytes, uint64_t length) |
Callback the core invokes when there's new incoming data on a DATAGRAM . | |
void | imquic_roq_connection_gone (imquic_connection *conn) |
Callback the core invokes when an existing RoQ connection is not available anymore. | |
size_t | imquic_roq_send_rtp (imquic_connection *conn, imquic_roq_multiplexing multiplexing, uint64_t flow_id, uint8_t *bytes, size_t blen, gboolean close_stream) |
Helper to send RTP packets over QUIC, using one of the supported imquic_roq_multiplexing modes. The method only requires the flow ID (to allow the recipient to identify the RTP session) and the RTP packet to send (buffer and size). The stack will then internally frame the packet as needed, using the right multiplexing mode and optionally creating a new STREAM for the purpose. | |
RTP Over QUIC (RoQ) stack.
Implementation of the RTP Over QUIC (RoQ) stack as part of the library itself. At the time of writing, this implements (most of) version -10 of the protocol.
typedef struct imquic_roq_packet imquic_roq_packet |
void imquic_roq_connection_gone | ( | imquic_connection * | conn | ) |
Callback the core invokes when an existing RoQ connection is not available anymore.
conn | The imquic_connection instance that is now gone |
void imquic_roq_datagram_incoming | ( | imquic_connection * | conn, |
uint8_t * | bytes, | ||
uint64_t | length ) |
Callback the core invokes when there's new incoming data on a DATAGRAM
.
conn | The imquic_connection instance for which new DATAGRAM data is available |
bytes | The new data that is available |
length | Size of the new data |
void imquic_roq_deinit | ( | void | ) |
Uninitialize the native RoQ stack.
void imquic_roq_init | ( | void | ) |
Initialize the native RoQ stack at startup.
void imquic_roq_new_connection | ( | imquic_connection * | conn, |
void * | user_data ) |
Callback the core invokes when a new QUIC connection using RoQ is available.
conn | The imquic_connection instance that is now available |
user_data | Optional user data the user/application may have associated to the endpoint this connection belongs to |
size_t imquic_roq_send_rtp | ( | imquic_connection * | conn, |
imquic_roq_multiplexing | multiplexing, | ||
uint64_t | flow_id, | ||
uint8_t * | bytes, | ||
size_t | blen, | ||
gboolean | close_stream ) |
Helper to send RTP packets over QUIC, using one of the supported imquic_roq_multiplexing modes. The method only requires the flow ID (to allow the recipient to identify the RTP session) and the RTP packet to send (buffer and size). The stack will then internally frame the packet as needed, using the right multiplexing mode and optionally creating a new STREAM
for the purpose.
[in] | conn | The RoQ connection to send the RTP packet on |
[in] | multiplexing | The imquic_roq_multiplexing mode to use for sending this packet |
[in] | flow_id | The RoQ flow ID |
[in] | bytes | The buffer containing the RTP packet |
[in] | blen | The size of the buffer to send |
[in] | close_stream | Whether the STREAM should be closed after sending this packet (ignored when using DATAGRAM as a multiplexing mode) |
void imquic_roq_stream_incoming | ( | imquic_connection * | conn, |
uint64_t | stream_id, | ||
uint8_t * | bytes, | ||
uint64_t | offset, | ||
uint64_t | length, | ||
gboolean | complete ) |
Callback the core invokes when there's new incoming data on a STREAM
.
conn | The imquic_connection instance for which new STREAM data is available |
stream_id | The QUIC Stream ID for which new data is available |
bytes | The new data that is available |
offset | The offset in the stream this new data should be put in |
length | Size of the new data |
complete | Whether this data marks the end of this STREAM |