ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
sdp.h
Go to the documentation of this file.
1
35
36#pragma once
37
38/* Storage capacities in elements; text buffers include the terminating NUL. */
39#define NETWORK_WEBRTC_SDP_SESSION_ID_BUFFER_SIZE 32
40#define NETWORK_WEBRTC_SDP_SESSION_VERSION_BUFFER_SIZE 16
41#define NETWORK_WEBRTC_SDP_SDP_STRING_BUFFER_SIZE 4096
42
43#include <stdint.h>
44#include <stdbool.h>
45#include <stddef.h>
46#include "../../common.h"
48#include "../../media/codecs.h"
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/* ============================================================================
55 * Audio Codec Configuration
56 * ============================================================================ */
57
74
75/* ============================================================================
76 * Terminal Rendering Capability "Codecs"
77 * ============================================================================ */
78
91
104
112
113/* ============================================================================
114 * SDP Session Description
115 * ============================================================================ */
116
146
147/* ============================================================================
148 * SDP Generation (Offer/Answer)
149 * ============================================================================ */
150
170asciichat_error_t sdp_generate_offer(const terminal_capability_t *capabilities, size_t capability_count,
171 const opus_config_t *audio_config, const terminal_format_params_t *format,
172 uint32_t video_codec_caps, uint32_t audio_codec_caps, sdp_session_t *offer_out);
173
193asciichat_error_t sdp_generate_answer(const sdp_session_t *offer, const terminal_capability_t *server_capabilities,
194 size_t server_capability_count, const opus_config_t *audio_config,
195 const terminal_format_params_t *server_format, uint32_t server_video_codec_caps,
196 uint32_t server_audio_codec_caps, sdp_session_t *answer_out);
197
198/* ============================================================================
199 * SDP Parsing (Offer/Answer)
200 * ============================================================================ */
201
211asciichat_error_t sdp_parse(const char *sdp_string, sdp_session_t *session);
212
224 terminal_format_params_t *selected_format);
225
226/* ============================================================================
227 * Capability Detection
228 * ============================================================================ */
229
246 size_t *detected_count);
247
248/* ============================================================================
249 * Utility Functions
250 * ============================================================================ */
251
257
263const char *sdp_codec_name(acip_codec_t codec);
264
269const char *sdp_renderer_name(int renderer_type);
270
271#ifdef __cplusplus
272}
273#endif
Synchronized per-thread pending error stacks and value snapshots. SET_ERRNO pushes,...
Video and audio codec definitions and capability bitmasks.
⚙️ Common definitions, error codes, macros, and types shared throughout the application
unsigned short uint16_t
Definition common.h:61
unsigned int uint32_t
Definition common.h:62
unsigned char uint8_t
Definition common.h:60
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
asciichat_error_t sdp_detect_terminal_capabilities(terminal_capability_t *capabilities, size_t capability_count, size_t *detected_count)
Detect client terminal capabilities at startup.
Definition sdp.c:698
asciichat_error_t sdp_parse(const char *sdp_string, sdp_session_t *session)
Parse SDP offer or answer.
Definition sdp.c:485
acip_codec_t
Terminal rendering capability payload types.
Definition sdp.h:85
@ ACIP_CODEC_16COLOR
16-color (ANSI standard)
Definition sdp.h:88
@ ACIP_CODEC_MONO
Monochrome (ASCII only).
Definition sdp.h:89
@ ACIP_CODEC_256COLOR
256-color (xterm palette)
Definition sdp.h:87
@ ACIP_CODEC_TRUECOLOR
24-bit RGB (truecolor)
Definition sdp.h:86
const char * sdp_codec_name(acip_codec_t codec)
Get human-readable codec name.
Definition sdp.c:33
asciichat_error_t sdp_generate_answer(const sdp_session_t *offer, const terminal_capability_t *server_capabilities, size_t server_capability_count, const opus_config_t *audio_config, const terminal_format_params_t *server_format, uint32_t server_video_codec_caps, uint32_t server_audio_codec_caps, sdp_session_t *answer_out)
Generate SDP answer (server side).
Definition sdp.c:192
asciichat_error_t sdp_get_selected_video_codec(const sdp_session_t *answer, acip_codec_t *selected_codec, terminal_format_params_t *selected_format)
Extract selected video codec from SDP answer.
Definition sdp.c:671
#define NETWORK_WEBRTC_SDP_SDP_STRING_BUFFER_SIZE
Definition sdp.h:41
const char * sdp_renderer_name(int renderer_type)
Get human-readable renderer name.
Definition sdp.c:48
void sdp_session_destroy(sdp_session_t *session)
Free SDP session resources.
Definition sdp.c:802
#define NETWORK_WEBRTC_SDP_SESSION_ID_BUFFER_SIZE
Definition sdp.h:39
asciichat_error_t sdp_generate_offer(const terminal_capability_t *capabilities, size_t capability_count, const opus_config_t *audio_config, const terminal_format_params_t *format, uint32_t video_codec_caps, uint32_t audio_codec_caps, sdp_session_t *offer_out)
SDP media session (simplified for WebRTC).
Definition sdp.c:65
#define NETWORK_WEBRTC_SDP_SESSION_VERSION_BUFFER_SIZE
Definition sdp.h:40
Opus codec parameters for ascii-chat.
Definition sdp.h:66
bool dtx_enabled
Discontinuous Transmission (silence suppression).
Definition sdp.h:71
bool fec_enabled
Forward Error Correction for lossy networks.
Definition sdp.h:72
uint32_t sample_rate
48000 Hz (Opus native rate)
Definition sdp.h:67
uint32_t bitrate
24000 bps (good quality for speech)
Definition sdp.h:69
uint16_t frame_duration
20 ms (balance latency/efficiency)
Definition sdp.h:70
uint8_t channels
1 (mono for voice chat)
Definition sdp.h:68
SDP media session (simplified for WebRTC).
Definition sdp.h:123
terminal_format_params_t video_format
Default format parameters.
Definition sdp.h:137
uint32_t codec_capabilities_audio
AUDIO_CODEC_CAP_* bitmask (which audio codecs peer supports).
Definition sdp.h:131
size_t video_codec_count
Number of supported capabilities.
Definition sdp.h:136
char session_version[16]
Session version (timestamp).
Definition sdp.h:126
size_t sdp_length
Length of SDP string (excluding null).
Definition sdp.h:142
bool has_audio
Audio media included.
Definition sdp.h:129
char session_id[32]
Session identifier.
Definition sdp.h:125
terminal_capability_t * video_codecs
Array of supported capabilities.
Definition sdp.h:135
uint32_t codec_capabilities_video
VIDEO_CODEC_CAP_* bitmask (which video codecs peer supports).
Definition sdp.h:138
opus_config_t audio_config
Opus codec configuration.
Definition sdp.h:130
bool has_video
Video media included.
Definition sdp.h:134
char sdp_string[4096]
Complete SDP as null-terminated string.
Definition sdp.h:141
Supported terminal capability (for offer/answer).
Definition sdp.h:108
terminal_format_params_t format
Format parameters.
Definition sdp.h:110
acip_codec_t codec
Rendering capability type.
Definition sdp.h:109
Terminal rendering format parameters.
Definition sdp.h:95
bool csi_rep_support
CSI REP (repeat) support.
Definition sdp.h:101
uint16_t height
Terminal height in characters.
Definition sdp.h:97
uint16_t width
Terminal width in characters.
Definition sdp.h:96
const char * palette_hint
Palette name (informational).
Definition sdp.h:102