ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
common/session/capture.h
Go to the documentation of this file.
1
49
50#pragma once
51
52#include <stdbool.h>
53#include <stddef.h>
54#include <stdint.h>
57
58/* ============================================================================
59 * Session Capture Configuration
60 * ============================================================================ */
61
71typedef bool (*session_capture_should_exit_fn)(void *user_data);
72
118
119/* ============================================================================
120 * Session Capture Context
121 * ============================================================================ */
122
135
136/* ============================================================================
137 * Session Capture Lifecycle Functions
138 * @{
139 */
140
169
186
200
211
213
214/* ============================================================================
215 * Session Capture Operations
216 * @{
217 */
218
233
253 image_t **output);
254
267
279
288
297
306
317
333size_t session_capture_read_audio(session_capture_ctx_t *ctx, float *buffer, size_t num_samples);
334
345
361
368
375
377typedef void *(*session_capture_audio_update_fn)(media_source_t *source, void *user_data);
379 void *user_data);
380
382
384
387
389
391
397
403
407void session_capture_skip_media(session_capture_ctx_t *ctx, int direction);
void session_capture_lock_source(session_capture_ctx_t *ctx)
void session_capture_unlock_source(session_capture_ctx_t *ctx)
void session_capture_set_audio_context(session_capture_ctx_t *ctx, void *audio_ctx)
Set the audio context for playback control.
void session_capture_set_audio_updater(session_capture_ctx_t *ctx, session_capture_audio_update_fn update, void *user_data)
void session_capture_toggle_media(session_capture_ctx_t *ctx)
void session_capture_skip_media(session_capture_ctx_t *ctx, int direction)
void *(* session_capture_audio_update_fn)(media_source_t *source, void *user_data)
uint64_t session_capture_frame_serial(session_capture_ctx_t *ctx)
bool session_capture_media_active(session_capture_ctx_t *ctx)
void * session_capture_get_audio_context(session_capture_ctx_t *ctx)
Get the audio context for playback control.
asciichat_error_t session_capture_open_playlist(session_capture_ctx_t *ctx, const char *text)
void session_capture_redraw_media(session_capture_ctx_t *ctx)
void session_capture_complete_open(session_capture_ctx_t *ctx, uint64_t epoch)
asciichat_error_t session_capture_open_media(session_capture_ctx_t *ctx, const char *path)
uint64_t session_capture_source_epoch(session_capture_ctx_t *ctx)
bool session_capture_cancel_open(session_capture_ctx_t *ctx)
asciichat_error_t session_capture_process_for_transmission_into(session_capture_ctx_t *ctx, image_t *frame, image_t **output)
audio_visualization_source_t source
Definition fft.c:24
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
media_source_type_t
Media source type enumeration.
Definition source.h:97
bool session_capture_has_audio(session_capture_ctx_t *ctx)
Check if capture source has audio available.
bool(* session_capture_should_exit_fn)(void *user_data)
Callback type to check if initialization should be cancelled.
image_t * session_capture_process_for_transmission(session_capture_ctx_t *ctx, image_t *frame)
Process a frame for network transmission (resize if needed).
session_capture_ctx_t * session_mirror_capture_create(const session_capture_config_t *config)
Create a new session capture context.
bool session_capture_at_end(session_capture_ctx_t *ctx)
Check if capture source has reached end of stream.
double session_capture_get_current_fps(session_capture_ctx_t *ctx)
Get the current FPS being achieved by the capture source.
size_t session_capture_read_audio(session_capture_ctx_t *ctx, float *buffer, size_t num_samples)
Read audio samples from capture source.
struct session_capture_ctx session_capture_ctx_t
session capture config keeps the values that move through the subsystem: type, path,...
image_t * session_capture_read_frame(session_capture_ctx_t *ctx)
Read the next video frame from the capture source.
bool session_capture_is_valid(session_capture_ctx_t *ctx)
Check if capture context is initialized and valid.
bool session_capture_using_file_audio(session_capture_ctx_t *ctx)
Check if currently using file audio vs microphone fallback.
uint32_t session_capture_get_target_fps(session_capture_ctx_t *ctx)
Get the target FPS configured for this capture context.
session_capture_ctx_t * session_capture_create(const session_capture_config_t *config)
Legacy function - creates either mirror or network capture based on options.
session_capture_ctx_t * session_network_capture_create(uint32_t target_fps)
Create network mode capture context without media source.
void * session_capture_get_media_source(session_capture_ctx_t *ctx)
Get the underlying media source from capture context.
void session_capture_sleep_for_fps(session_capture_ctx_t *ctx)
Sleep to maintain target frame rate.
void session_capture_destroy(session_capture_ctx_t *ctx)
Destroy session capture context and free resources.
🎬 Unified media source abstraction for webcam, files, and stdin
SIMD-friendly storage for one RGB pixel. r, g, and b hold the color channels and padding keeps the la...
Media source for video and audio capture.
Definition source.c:47
Media-source and loader settings used to create a session capture context.
media_source_type_t type
Media source type (WEBCAM, FILE, STDIN, TEST).
const char * path
Device index (for webcam) or file path (for file sources).
uint32_t target_fps
Target frame rate in FPS (e.g., 60 for display, 144 for network).
double initial_seek_timestamp
Seek to this timestamp after opening media (0.0 = no seek).
session_capture_should_exit_fn should_exit_callback
Optional cancellation callback, also invoked by media loader threads. The callback and its data must ...
void * callback_data
Opaque data passed to should_exit_callback.
bool audio_fallback_to_mic
Fall back to microphone if file audio is not available.
bool resize_for_network
Resize frames to network-optimal dimensions (MAX_FRAME_WIDTH x MAX_FRAME_HEIGHT).
bool loop
Enable loop playback for file sources.
bool enable_audio
Enable audio capture from media source.
void * mic_audio_ctx
Microphone audio context for fallback (borrowed, not owned).
Runtime state for media loading, frame timing, and source switching.
uint32_t target_fps
Target frames per second.
atomic_ptr_t audio_ctx
Main audio context for playback (borrowed, not owned).