ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
src/common/session/display.h
Go to the documentation of this file.
1
44#pragma once
45
46#include <stdbool.h>
47#include <stddef.h>
48#include <stdint.h>
52
53/* ============================================================================
54 * Session Display Configuration
55 * ============================================================================ */
56
66typedef bool (*session_display_should_exit_fn)(void *user_data);
67
107
108/* ============================================================================
109 * Session Display Context
110 * ============================================================================ */
111
121
122/* ============================================================================
123 * Session Display Lifecycle Functions
124 * @{
125 */
126
141
153
165
176
188
191/* ============================================================================
192 * Session Display Query Functions
193 * @{
194 */
195
207
221
233
242
254
263
272
281
290
298
300
309
318
330
333/* ============================================================================
334 * Session Display ASCII Conversion Functions
335 * @{
336 */
337
356
359/* ============================================================================
360 * Session Display Rendering Functions
361 * @{
362 */
363
374void session_display_write_ascii(session_display_ctx_t *ctx, const char *frame_data);
375
386void session_display_encode_frame(session_display_ctx_t *ctx, const image_t *image, uint64_t captured_ns);
387
402void session_display_render_frame(session_display_ctx_t *ctx, const char *frame_data);
403
415void session_display_write_raw(session_display_ctx_t *ctx, const char *data, size_t len);
416
427
439void session_display_set_snapshot_actual_duration(session_display_ctx_t *ctx, double actual_duration_sec);
440
451
461
471
474/* ============================================================================
475 * Session Display Audio Functions
476 * @{
477 */
478
487
500asciichat_error_t session_display_write_audio(session_display_ctx_t *ctx, const float *buffer, size_t num_samples);
501
unsigned int uint32_t
Definition common.h:58
unsigned long long uint64_t
Definition common.h:59
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
palette_type_t
Built-in palette type enumeration.
Definition palette.h:84
void session_display_destroy(session_display_ctx_t *ctx)
Destroy session display context and free resources.
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_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)
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.
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.
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_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_render_fps_overlay(session_display_ctx_t *ctx)
Render FPS counter overlay in top-right corner.
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.
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.
void session_display_set_render_live_timing(session_display_ctx_t *ctx)
ClangTool/LibTooling compatibility shim for stdbool.h.
#define bool
Definition stdbool.h:61
Image structure.
Configuration for session 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)
Internal session display context structure.
Complete terminal capabilities structure.
Definition terminal.h:709
🖥️ Cross-platform terminal interface for ascii-chat
terminal_color_mode_t
Terminal color support levels.
Definition terminal.h:578