ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
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
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48/* ============================================================================
49 * Audio Codec Configuration
50 * ============================================================================ */
51
65
66/* ============================================================================
67 * Terminal Rendering Capability "Codecs"
68 * ============================================================================ */
69
82
86typedef struct {
89 enum { RENDERER_BLOCK, RENDERER_HALFBLOCK, RENDERER_BRAILLE } renderer;
90 enum { CHARSET_ASCII, CHARSET_UTF8, CHARSET_UTF8_WIDE } charset;
91 enum { COMPRESSION_NONE, COMPRESSION_RLE, COMPRESSION_ZSTD } compression;
93 const char *palette_hint;
95
103
104/* ============================================================================
105 * SDP Session Description
106 * ============================================================================ */
107
114typedef struct {
115 /* Session-level attributes */
116 char session_id[32];
117 char session_version[16];
118
119 /* Audio media section */
122
123 /* Video media section (terminal capabilities) */
128
129 /* Raw SDP string (generated from above) */
130 char sdp_string[4096];
131 size_t sdp_length;
133
134/* ============================================================================
135 * SDP Generation (Offer/Answer)
136 * ============================================================================ */
137
154asciichat_error_t sdp_generate_offer(const terminal_capability_t *capabilities, size_t capability_count,
155 const opus_config_t *audio_config, const terminal_format_params_t *format,
156 sdp_session_t *offer_out);
157
174asciichat_error_t sdp_generate_answer(const sdp_session_t *offer, const terminal_capability_t *server_capabilities,
175 size_t server_capability_count, const opus_config_t *audio_config,
176 const terminal_format_params_t *server_format, sdp_session_t *answer_out);
177
178/* ============================================================================
179 * SDP Parsing (Offer/Answer)
180 * ============================================================================ */
181
191asciichat_error_t sdp_parse(const char *sdp_string, sdp_session_t *session);
192
204 terminal_format_params_t *selected_format);
205
206/* ============================================================================
207 * Capability Detection
208 * ============================================================================ */
209
226 size_t *detected_count);
227
228/* ============================================================================
229 * Utility Functions
230 * ============================================================================ */
231
236void sdp_session_free(sdp_session_t *session);
237
243const char *sdp_codec_name(acip_codec_t codec);
244
249const char *sdp_renderer_name(int renderer_type);
250
251#ifdef __cplusplus
252}
253#endif
⚠️‼️ Error and/or exit() when things go bad.
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:46
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:561
asciichat_error_t sdp_parse(const char *sdp_string, sdp_session_t *session)
Parse SDP offer or answer.
Definition sdp.c:318
acip_codec_t
Terminal rendering capability payload types.
Definition sdp.h:76
@ ACIP_CODEC_16COLOR
16-color (ANSI standard)
Definition sdp.h:79
@ ACIP_CODEC_MONO
Monochrome (ASCII only)
Definition sdp.h:80
@ ACIP_CODEC_256COLOR
256-color (xterm palette)
Definition sdp.h:78
@ ACIP_CODEC_TRUECOLOR
24-bit RGB (truecolor)
Definition sdp.h:77
const char * sdp_codec_name(acip_codec_t codec)
Get human-readable codec name.
Definition sdp.c:21
void sdp_session_free(sdp_session_t *session)
Free SDP session resources.
Definition sdp.c:665
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:534
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, sdp_session_t *offer_out)
Generate SDP offer (client side)
Definition sdp.c:53
const char * sdp_renderer_name(int renderer_type)
Get human-readable renderer name.
Definition sdp.c:36
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, sdp_session_t *answer_out)
Generate SDP answer (server side)
Definition sdp.c:168
uint8_t session_id[16]
Opus codec parameters for ascii-chat.
Definition sdp.h:57
bool dtx_enabled
Discontinuous Transmission (silence suppression)
Definition sdp.h:62
bool fec_enabled
Forward Error Correction for lossy networks.
Definition sdp.h:63
uint32_t sample_rate
48000 Hz (Opus native rate)
Definition sdp.h:58
uint32_t bitrate
24000 bps (good quality for speech)
Definition sdp.h:60
uint16_t frame_duration
20 ms (balance latency/efficiency)
Definition sdp.h:61
uint8_t channels
1 (mono for voice chat)
Definition sdp.h:59
SDP media session (simplified for WebRTC)
Definition sdp.h:114
terminal_format_params_t video_format
Default format parameters.
Definition sdp.h:127
size_t video_codec_count
Number of supported capabilities.
Definition sdp.h:126
size_t sdp_length
Length of SDP string (excluding null)
Definition sdp.h:131
bool has_audio
Audio media included.
Definition sdp.h:120
terminal_capability_t * video_codecs
Array of supported capabilities.
Definition sdp.h:125
opus_config_t audio_config
Opus codec configuration.
Definition sdp.h:121
bool has_video
Video media included.
Definition sdp.h:124
Supported terminal capability (for offer/answer)
Definition sdp.h:99
terminal_format_params_t format
Format parameters.
Definition sdp.h:101
acip_codec_t codec
Rendering capability type.
Definition sdp.h:100
Terminal rendering format parameters.
Definition sdp.h:86
bool csi_rep_support
CSI REP (repeat) support.
Definition sdp.h:92
uint16_t height
Terminal height in characters.
Definition sdp.h:88
uint16_t width
Terminal width in characters.
Definition sdp.h:87
const char * palette_hint
Palette name (informational)
Definition sdp.h:93