ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
render.h
Go to the documentation of this file.
1
6#pragma once
7
8#include "client.h"
9
10// Per-client render thread functions
11void *client_video_render_thread(void *arg);
12void *client_audio_render_thread(void *arg);
13
14// Render thread lifecycle management
17
18// Render timing control - match platform-specific client FPS for optimal performance
19#ifdef _WIN32
20#define VIDEO_RENDER_FPS 60 // Windows with timeBeginPeriod(1) can handle 60 FPS
21#else
22#define VIDEO_RENDER_FPS 60 // Linux/macOS can handle higher rates
23#endif
24// Audio render rate: 480 samples per iteration, 10ms interval = 100 FPS
25// This gives 48,000 samples/sec which matches real-time playback rate
26#define AUDIO_RENDER_FPS 100 // 10ms interval for real-time rate
27
28// Render utilities
29void calculate_render_interval(int target_fps, struct timespec *interval);
30void wait_for_next_render(struct timespec *last_render_time, const struct timespec *interval);
void stop_client_render_threads(client_info_t *client)
Stop and cleanup per-client rendering threads.
Definition render.c:1255
void wait_for_next_render(struct timespec *last_render_time, const struct timespec *interval)
void * client_video_render_thread(void *arg)
Interruptible sleep function with platform-specific optimizations.
Definition render.c:359
void calculate_render_interval(int target_fps, struct timespec *interval)
void * client_audio_render_thread(void *arg)
Main audio rendering thread function for individual clients.
Definition render.c:673
int create_client_render_threads(server_context_t *server_ctx, client_info_t *client)
Create and initialize per-client rendering threads.
Definition render.c:1121
Per-client state management and lifecycle orchestration.
Per-client state structure for server-side client management.
Server context - encapsulates all server state.
Definition server/main.h:81