ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
sdp.h
Go to the documentation of this file.
1
36#pragma once
37
38#include <stdint.h>
39#include <stdbool.h>
40#include <stddef.h>
41#include "../../common.h"
42#include "../../asciichat_errno.h"
43#include "../../media/codecs.h"
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/* ============================================================================
50 * Audio Codec Configuration
51 * ============================================================================ */
52
66
67/* ============================================================================
68 * Terminal Rendering Capability "Codecs"
69 * ============================================================================ */
70
83
87typedef struct {
90 enum { RENDERER_BLOCK, RENDERER_HALFBLOCK, RENDERER_BRAILLE } renderer;
91 enum { CHARSET_ASCII, CHARSET_UTF8, CHARSET_UTF8_WIDE } charset;
92 enum { COMPRESSION_NONE, COMPRESSION_RLE, COMPRESSION_ZSTD } compression;
94 const char *palette_hint;
96
104
105/* ============================================================================
106 * SDP Session Description
107 * ============================================================================ */
108
115typedef struct {
116 /* Session-level attributes */
117 char session_id[32];
118 char session_version[16];
119
120 /* Audio media section */
124
125 /* Video media section (terminal capabilities) */
131
132 /* Raw SDP string (generated from above) */
133 char sdp_string[4096];
134 size_t sdp_length;
136
137/* ============================================================================
138 * SDP Generation (Offer/Answer)
139 * ============================================================================ */
140
159asciichat_error_t sdp_generate_offer(const terminal_capability_t *capabilities, size_t capability_count,
160 const opus_config_t *audio_config, const terminal_format_params_t *format,
161 uint32_t video_codec_caps, uint32_t audio_codec_caps,
162 sdp_session_t *offer_out);
163
183asciichat_error_t sdp_generate_answer(const sdp_session_t *offer, const terminal_capability_t *server_capabilities,
184 size_t server_capability_count, const opus_config_t *audio_config,
185 const terminal_format_params_t *server_format,
186 uint32_t server_video_codec_caps, uint32_t server_audio_codec_caps,
187 sdp_session_t *answer_out);
188
189/* ============================================================================
190 * SDP Parsing (Offer/Answer)
191 * ============================================================================ */
192
202asciichat_error_t sdp_parse(const char *sdp_string, sdp_session_t *session);
203
215 terminal_format_params_t *selected_format);
216
217/* ============================================================================
218 * Capability Detection
219 * ============================================================================ */
220
237 size_t *detected_count);
238
239/* ============================================================================
240 * Utility Functions
241 * ============================================================================ */
242
248
254const char *sdp_codec_name(acip_codec_t codec);
255
260const char *sdp_renderer_name(int renderer_type);
261
262#ifdef __cplusplus
263}
264#endif
unsigned short uint16_t
Definition common.h:57
unsigned int uint32_t
Definition common.h:58
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
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:691
asciichat_error_t sdp_parse(const char *sdp_string, sdp_session_t *session)
Parse SDP offer or answer.
Definition sdp.c:479
acip_codec_t
Terminal rendering capability payload types.
Definition sdp.h:77
@ ACIP_CODEC_16COLOR
16-color (ANSI standard)
Definition sdp.h:80
@ ACIP_CODEC_MONO
Monochrome (ASCII only)
Definition sdp.h:81
@ ACIP_CODEC_256COLOR
256-color (xterm palette)
Definition sdp.h:79
@ ACIP_CODEC_TRUECOLOR
24-bit RGB (truecolor)
Definition sdp.h:78
const char * sdp_codec_name(acip_codec_t codec)
Get human-readable codec name.
Definition sdp.c:24
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:183
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:664
const char * sdp_renderer_name(int renderer_type)
Get human-readable renderer name.
Definition sdp.c:39
void sdp_session_destroy(sdp_session_t *session)
Free SDP session resources.
Definition sdp.c:795
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)
Generate SDP offer (client side)
Definition sdp.c:56
uint8_t session_id[16]
ClangTool/LibTooling compatibility shim for stdbool.h.
Opus codec parameters for ascii-chat.
Definition sdp.h:58
bool dtx_enabled
Discontinuous Transmission (silence suppression)
Definition sdp.h:63
bool fec_enabled
Forward Error Correction for lossy networks.
Definition sdp.h:64
uint32_t sample_rate
48000 Hz (Opus native rate)
Definition sdp.h:59
uint32_t bitrate
24000 bps (good quality for speech)
Definition sdp.h:61
uint16_t frame_duration
20 ms (balance latency/efficiency)
Definition sdp.h:62
uint8_t channels
1 (mono for voice chat)
Definition sdp.h:60
SDP media session (simplified for WebRTC)
Definition sdp.h:115
terminal_format_params_t video_format
Default format parameters.
Definition sdp.h:129
uint32_t codec_capabilities_audio
AUDIO_CODEC_CAP_* bitmask (which audio codecs peer supports)
Definition sdp.h:123
size_t video_codec_count
Number of supported capabilities.
Definition sdp.h:128
size_t sdp_length
Length of SDP string (excluding null)
Definition sdp.h:134
bool has_audio
Audio media included.
Definition sdp.h:121
terminal_capability_t * video_codecs
Array of supported capabilities.
Definition sdp.h:127
uint32_t codec_capabilities_video
VIDEO_CODEC_CAP_* bitmask (which video codecs peer supports)
Definition sdp.h:130
opus_config_t audio_config
Opus codec configuration.
Definition sdp.h:122
bool has_video
Video media included.
Definition sdp.h:126
Supported terminal capability (for offer/answer)
Definition sdp.h:100
terminal_format_params_t format
Format parameters.
Definition sdp.h:102
acip_codec_t codec
Rendering capability type.
Definition sdp.h:101
Terminal rendering format parameters.
Definition sdp.h:87
bool csi_rep_support
CSI REP (repeat) support.
Definition sdp.h:93
uint16_t height
Terminal height in characters.
Definition sdp.h:89
uint16_t width
Terminal width in characters.
Definition sdp.h:88
const char * palette_hint
Palette name (informational)
Definition sdp.h:94