ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
src/common/session/display.h
Go to the documentation of this file.
1
43
44#pragma once
45
46#include <stdbool.h>
47#include <stddef.h>
48#include <stdint.h>
49#include <libplatform/terminal.h>
52
53/* ============================================================================
54 * Session Display Configuration
55 * ============================================================================ */
56
66typedef bool (*session_display_should_exit_fn)(void *user_data);
67
109
110/* ============================================================================
111 * Session Display Context
112 * ============================================================================ */
113
126
127/* ============================================================================
128 * Session Display Lifecycle Functions
129 * @{
130 */
131
146
158
170
181void session_display_begin_drain(session_display_ctx_t *ctx, uint64_t total, bool total_known);
182
184
196
198
199/* ============================================================================
200 * Session Display Query Functions
201 * @{
202 */
203
215
228const terminal_capabilities_t *session_display_get_caps(session_display_ctx_t *ctx);
229
241
250
262
271
280
289
298
306
308
317
326
338
340
341/* ============================================================================
342 * Session Display ASCII Conversion Functions
343 * @{
344 */
345
369
371
372/* ============================================================================
373 * Session Display Rendering Functions
374 * @{
375 */
376
387void session_display_write_ascii(session_display_ctx_t *ctx, const char *frame_data);
388
400
415void session_display_render_frame(session_display_ctx_t *ctx, const char *frame_data);
416
428void session_display_write_raw(session_display_ctx_t *ctx, const char *data, size_t len);
429
441void session_display_set_snapshot_actual_duration(session_display_ctx_t *ctx, double actual_duration_sec);
442
453
463
473
475
476/* ============================================================================
477 * Session Display Audio Functions
478 * @{
479 */
480
489
502asciichat_error_t session_display_write_audio(session_display_ctx_t *ctx, const float *buffer, size_t num_samples);
503
505
507
509void session_display_write_ascii_frame(session_display_ctx_t *ctx, const char *ascii, bool fresh);
unsigned int uint32_t
Definition common.h:62
unsigned long long uint64_t
Definition common.h:63
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
palette_type_t
Built-in palette type enumeration.
Definition palette.h:90
void session_display_destroy(session_display_ctx_t *ctx)
void session_display_set_render_fps(session_display_ctx_t *ctx, uint32_t fps)
Set the render FPS for file output encoding.
void session_display_write_ascii(session_display_ctx_t *ctx, const char *frame_data)
Write ASCII frame to terminal only (no encoding).
session_display_ctx_t * session_display_create(const session_display_config_t *config)
Create a new session display context.
asciichat_error_t session_display_finish_render_file(session_display_ctx_t *ctx)
Destroy session display context and free resources.
void session_display_clear(session_display_ctx_t *ctx)
Clear the terminal screen.
void * session_display_get_stdin_reader(session_display_ctx_t *ctx)
Get the stdin frame reader for ASCII-to-video rendering.
size_t session_display_get_palette_len(session_display_ctx_t *ctx)
Get the palette character count.
void session_display_set_stdin_reader(session_display_ctx_t *ctx, void *reader)
Set stdin frame reader for ASCII-to-video rendering.
struct session_display_ctx session_display_ctx_t
session display config is intentionally a small, concrete record. Fields such as snapshot_mode,...
void session_display_begin_drain(session_display_ctx_t *ctx, uint64_t total, bool total_known)
void session_display_set_snapshot_actual_duration(session_display_ctx_t *ctx, double actual_duration_sec)
Set the actual wall-clock duration for snapshot mode frame timing.
void session_display_write_raw(session_display_ctx_t *ctx, const char *data, size_t len)
Render raw bytes to the terminal without frame processing.
asciichat_error_t session_display_encode_frame(session_display_ctx_t *ctx, const image_t *image, uint64_t captured_ns)
Encode frame to render-file (FFmpeg only, no terminal output).
asciichat_error_t session_display_write_audio(session_display_ctx_t *ctx, const float *buffer, size_t num_samples)
Write audio samples to playback buffer.
session_display_ctx_t * session_display_get_global_context(void)
Get the global display context (used for signal handlers and special cleanup).
bool session_display_has_tty(session_display_ctx_t *ctx)
Check if display has a TTY (terminal) available.
void session_display_cursor_home(session_display_ctx_t *ctx)
Move cursor to home position (top-left).
const char * session_display_get_luminance_palette(session_display_ctx_t *ctx)
Get the luminance mapping palette.
void session_display_set_global_context_public(session_display_ctx_t *ctx)
Set the global display context (public setter for discovery cleanup).
void session_display_render_frame(session_display_ctx_t *ctx, const char *frame_data)
Render an ASCII frame to the terminal.
void session_display_reset_first_frame(session_display_ctx_t *ctx)
Reset the first frame flag to allow splash screen to show again on next render.
int session_display_get_tty_fd(session_display_ctx_t *ctx)
Get the TTY file descriptor.
bool session_display_has_first_frame(session_display_ctx_t *ctx)
Check if the display has rendered its first frame.
bool session_display_has_render_file(session_display_ctx_t *ctx)
Check if display has render-file configured.
const char * session_display_get_palette_chars(session_display_ctx_t *ctx)
Get the palette characters string.
const terminal_capabilities_t * session_display_get_caps(session_display_ctx_t *ctx)
Get detected terminal capabilities.
bool session_display_has_audio_playback(session_display_ctx_t *ctx)
Check if display has audio playback configured.
char * session_display_convert_to_ascii(session_display_ctx_t *ctx, const image_t *image)
Convert an image to ASCII art using display context and command-line options.
void session_display_reset(session_display_ctx_t *ctx)
Reset terminal to default state.
bool(* session_display_should_exit_fn)(void *user_data)
Callback type to check if initialization should be cancelled.
uint32_t session_display_get_render_fps(session_display_ctx_t *ctx)
Get the render FPS configured for file output.
ASCII Palette Management for Video-to-ASCII Conversion.
void session_display_release_ascii(session_display_ctx_t *ctx, char *ascii)
void session_display_reset_stabilizer(session_display_ctx_t *ctx, bool recording)
asciichat_error_t session_display_init_render_file(session_display_ctx_t *ctx, uint32_t fps)
Initialize render-file output after the capture frame rate is known.
char * session_display_convert_to_ascii_reuse(session_display_ctx_t *ctx, const image_t *image)
void session_display_set_render_live_timing(session_display_ctx_t *ctx)
void session_display_write_ascii_frame(session_display_ctx_t *ctx, const char *ascii, bool fresh)
SIMD-friendly storage for one RGB pixel. r, g, and b hold the color channels and padding keeps the la...
Terminal-rendering and snapshot settings used to create a display context.
void * callback_data
Opaque data passed to should_exit_callback.
palette_type_t palette_type
Palette type for ASCII rendering.
void * audio_ctx
Audio context for playback (borrowed, not owned).
bool defer_render_file
Defer render-file encoder creation until media timing is known.
const char * custom_palette
Custom palette characters (required if palette_type == PALETTE_CUSTOM).
bool enable_audio_playback
Enable audio playback (mirror mode).
session_display_should_exit_fn should_exit_callback
Optional: callback to check if initialization should be cancelled (e.g., shutdown signal).
uint32_t render_fps
Video FPS for render-file encoding (0 = use default/option).
bool snapshot_mode
Enable snapshot mode (single frame capture).
terminal_color_mode_t color_mode
Color mode override (TERM_COLOR_AUTO for auto-detection).
Runtime terminal state and reusable workspaces for ASCII rendering.