ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
source.h File Reference

🎬 Unified media source abstraction for webcam, files, and stdin More...

Go to the source code of this file.

Typedefs

typedef struct media_source_t media_source_t
 Opaque media source handle.
 

Enumerations

enum  media_source_type_t { MEDIA_SOURCE_WEBCAM , MEDIA_SOURCE_FILE , MEDIA_SOURCE_STDIN , MEDIA_SOURCE_TEST }
 Media source type enumeration. More...
 

Functions

media_source_t * media_source_create (media_source_type_t type, const char *path)
 Create a new media source.
 
void media_source_destroy (media_source_t *source)
 Destroy media source and free resources.
 
image_t * media_source_read_video (media_source_t *source)
 Read next video frame from media source.
 
bool media_source_has_video (media_source_t *source)
 Check if media source has video stream.
 
size_t media_source_read_audio (media_source_t *source, float *buffer, size_t num_samples)
 Read audio samples from media source.
 
bool media_source_has_audio (media_source_t *source)
 Check if media source has audio stream.
 
void media_source_set_loop (media_source_t *source, bool loop)
 Enable or disable looping.
 
void media_source_pause (media_source_t *source)
 Pause media playback.
 
void media_source_resume (media_source_t *source)
 Resume media playback after pause.
 
bool media_source_is_paused (media_source_t *source)
 Check if media source is paused.
 
void media_source_toggle_pause (media_source_t *source)
 Toggle pause state of media source.
 
bool media_source_at_end (media_source_t *source)
 Check if media source reached end of stream.
 
asciichat_error_t media_source_rewind (media_source_t *source)
 Rewind media source to beginning.
 
asciichat_error_t media_source_seek (media_source_t *source, double timestamp_sec)
 Seek media source to timestamp.
 
media_source_type_t media_source_get_type (media_source_t *source)
 Get media source type.
 
double media_source_get_duration (media_source_t *source)
 Get media duration in seconds.
 
double media_source_get_position (media_source_t *source)
 Get current playback position in seconds.
 
double media_source_get_video_fps (media_source_t *source)
 Get video frame rate in frames per second.
 
void media_source_set_audio_context (media_source_t *source, void *audio_ctx)
 Set audio context for playback buffer management.
 
void media_source_set_exit_callback (media_source_t *source, bool(*should_exit_callback)(void *), void *user_data)
 Set exit signal callback for graceful shutdown during I/O.
 
bool media_source_uses_webcam (media_source_t *source)
 
asciichat_error_t media_source_start_video (media_source_t *source)
 

Detailed Description

🎬 Unified media source abstraction for webcam, files, and stdin

Definition in file source.h.

Function Documentation

◆ media_source_start_video()

asciichat_error_t media_source_start_video ( media_source_t *  source)

Definition at line 506 of file source.c.

506 {
507 if (!source)
508 return SET_ERRNO(ERROR_INVALID_PARAM, "Missing media source");
509 if (!source->audio_only || source->webcam_ctx || GET_OPTION(test_pattern))
510 return ASCIICHAT_OK;
511 source->webcam_index = GET_OPTION(webcam_index);
513 if (err != ASCIICHAT_OK)
514 return SET_ERRNO(err, "Audio-only media requires webcam %u", source->webcam_index);
515 log_info("Audio-only media: using webcam %u for video", source->webcam_index);
516 return ASCIICHAT_OK;
517}
#define SET_ERRNO(code, context_msg,...)
Set error code with custom context message and log it, returning the error code.
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
@ ASCIICHAT_OK
Definition error_codes.h:51
@ ERROR_INVALID_PARAM
#define log_info(...)
Log an INFO message.
Definition log/log.h:561
#define GET_OPTION(field)
Safely get a specific option field (lock-free read)
asciichat_error_t webcam_init_context(webcam_context_t **ctx, unsigned short int device_index)
Initialize webcam context for advanced operations.
bool audio_only
File audio uses the selected webcam for video.
Definition source.c:37
webcam_context_t * webcam_ctx
Webcam context (NULL for non-webcam types)
Definition source.c:41
unsigned short int webcam_index
Webcam device index.
Definition source.c:42

References ASCIICHAT_OK, media_source_t::audio_only, ERROR_INVALID_PARAM, GET_OPTION, log_info, SET_ERRNO, media_source_t::webcam_ctx, media_source_t::webcam_index, and webcam_init_context().

Referenced by media_source_read_video(), and session_capture_create().

◆ media_source_uses_webcam()

bool media_source_uses_webcam ( media_source_t *  source)

Definition at line 519 of file source.c.

519 {
520 return source && (source->type == MEDIA_SOURCE_WEBCAM || (source->audio_only && !GET_OPTION(test_pattern)));
521}
@ MEDIA_SOURCE_WEBCAM
Hardware webcam device.
Definition source.h:82
media_source_type_t type
Type of media source (webcam, file, stdin, test)
Definition source.c:35

References media_source_t::audio_only, GET_OPTION, MEDIA_SOURCE_WEBCAM, and media_source_t::type.

Referenced by session_pipeline_create().