ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
capture.c File Reference

📹 Unified media capture implementation More...

Go to the source code of this file.

Data Structures

struct  session_capture_ctx
 Internal session capture context structure. More...
 

Macros

#define SESSION_MAX_FRAME_WIDTH   320
 Maximum frame width for network transmission (bandwidth optimization)
 
#define SESSION_MAX_FRAME_HEIGHT   180
 Maximum frame height for network transmission (bandwidth optimization)
 

Functions

session_capture_ctx_t * session_mirror_capture_create (const session_capture_config_t *config)
 Create a new session capture context.
 
session_capture_ctx_t * session_network_capture_create (uint32_t target_fps)
 Create network mode capture context without media source.
 
session_capture_ctx_t * session_capture_create (const session_capture_config_t *config)
 Legacy function - creates either mirror or network capture based on options.
 
void session_capture_destroy (session_capture_ctx_t *ctx)
 Destroy session capture context and free resources.
 
image_t * session_capture_read_frame (session_capture_ctx_t *ctx)
 Read the next video frame from the capture source.
 
image_t * session_capture_process_for_transmission (session_capture_ctx_t *ctx, image_t *frame)
 Process a frame for network transmission (resize if needed)
 
void session_capture_sleep_for_fps (session_capture_ctx_t *ctx)
 Sleep to maintain target frame rate.
 
bool session_capture_at_end (session_capture_ctx_t *ctx)
 Check if capture source has reached end of stream.
 
bool session_capture_is_valid (session_capture_ctx_t *ctx)
 Check if capture context is initialized and valid.
 
double session_capture_get_current_fps (session_capture_ctx_t *ctx)
 Get the current FPS being achieved by the capture source.
 
uint32_t session_capture_get_target_fps (session_capture_ctx_t *ctx)
 Get the target FPS configured for this capture context.
 
bool session_capture_has_audio (session_capture_ctx_t *ctx)
 Check if capture source has audio available.
 
size_t session_capture_read_audio (session_capture_ctx_t *ctx, float *buffer, size_t num_samples)
 Read audio samples from capture source.
 
bool session_capture_using_file_audio (session_capture_ctx_t *ctx)
 Check if currently using file audio vs microphone fallback.
 
void * session_capture_get_media_source (session_capture_ctx_t *ctx)
 Get the underlying media source from capture context.
 
void * session_capture_get_audio_context (session_capture_ctx_t *ctx)
 Get the audio context for playback control.
 
void session_capture_set_audio_context (session_capture_ctx_t *ctx, void *audio_ctx)
 Set the audio context for playback control.
 

Detailed Description

📹 Unified media capture implementation

Implements the session capture abstraction layer for unified media source handling across client, mirror, and discovery modes.

Author
Zachary Fogg me@zf.nosp@m.o.gg
Date
January 2026

Definition in file common/session/capture.c.

Macro Definition Documentation

◆ SESSION_MAX_FRAME_HEIGHT

#define SESSION_MAX_FRAME_HEIGHT   180

Maximum frame height for network transmission (bandwidth optimization)

Definition at line 36 of file common/session/capture.c.

◆ SESSION_MAX_FRAME_WIDTH

#define SESSION_MAX_FRAME_WIDTH   320

Maximum frame width for network transmission (bandwidth optimization)

Definition at line 33 of file common/session/capture.c.

Function Documentation

◆ session_capture_get_audio_context()

void * session_capture_get_audio_context ( session_capture_ctx_t *  ctx)

Get the audio context for playback control.

Parameters
ctxCapture context
Returns
Audio context pointer (borrowed, not owned) or NULL

Definition at line 566 of file common/session/capture.c.

566 {
567 if (!ctx || !ctx->initialized) {
568 return NULL;
569 }
570 return ctx->audio_ctx;
571}
bool initialized
Context has been successfully initialized.
void * audio_ctx
Main audio context for playback (borrowed, not owned)

References session_capture_ctx::audio_ctx, and session_capture_ctx::initialized.

Referenced by session_handle_keyboard_input().

◆ session_capture_set_audio_context()

void session_capture_set_audio_context ( session_capture_ctx_t *  ctx,
void *  audio_ctx 
)

Set the audio context for playback control.

Parameters
ctxCapture context (must not be NULL)
audio_ctxAudio context pointer (borrowed, not owned)

Definition at line 573 of file common/session/capture.c.

573 {
574 if (ctx) {
575 ctx->audio_ctx = audio_ctx;
576 }
577}

References session_capture_ctx::audio_ctx.

Referenced by session_client_like_run().