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

FFmpeg-based media decoder implementation. More...

Go to the source code of this file.

Data Structures

struct  ffmpeg_decoder_t
 FFmpeg decoder state for video and audio decoding. More...
 
struct  stdin_buffer_t
 
struct  stdin_buffer_reader_t
 

Macros

#define TARGET_SAMPLE_RATE   48000
 
#define TARGET_CHANNELS   1
 
#define AVIO_BUFFER_SIZE   (64 * 1024)
 

Functions

ffmpeg_decoder_t * ffmpeg_decoder_create (const char *path)
 Create FFmpeg decoder from file path.
 
ffmpeg_decoder_t * ffmpeg_decoder_create_stdin (void)
 Create FFmpeg decoder from stdin.
 
void ffmpeg_decoder_destroy (ffmpeg_decoder_t *decoder)
 Destroy FFmpeg decoder and free resources.
 
image_t * ffmpeg_decoder_read_video_frame (ffmpeg_decoder_t *decoder)
 Decode next video frame.
 
asciichat_error_t ffmpeg_decoder_start_prefetch (ffmpeg_decoder_t *decoder)
 Start the background frame prefetching thread.
 
void ffmpeg_decoder_stop_prefetch (ffmpeg_decoder_t *decoder)
 Stop the background frame prefetching thread.
 
void ffmpeg_decoder_set_exit_callback (ffmpeg_decoder_t *decoder, bool(*should_exit_callback)(void *), void *user_data)
 Set exit signal callback for graceful shutdown during I/O.
 
bool ffmpeg_decoder_is_prefetch_running (ffmpeg_decoder_t *decoder)
 Check if background frame prefetching thread is running.
 
bool ffmpeg_decoder_has_video (ffmpeg_decoder_t *decoder)
 Check if decoder has video stream.
 
asciichat_error_t ffmpeg_decoder_get_video_dimensions (ffmpeg_decoder_t *decoder, int *width, int *height)
 Get video dimensions.
 
double ffmpeg_decoder_get_video_fps (ffmpeg_decoder_t *decoder)
 Get video frame rate.
 
size_t ffmpeg_decoder_read_audio_samples (ffmpeg_decoder_t *decoder, float *buffer, size_t num_samples)
 Decode audio samples.
 
bool ffmpeg_decoder_has_audio (ffmpeg_decoder_t *decoder)
 Check if decoder has audio stream.
 
asciichat_error_t ffmpeg_decoder_rewind (ffmpeg_decoder_t *decoder)
 Seek to beginning of media.
 
asciichat_error_t ffmpeg_decoder_seek_to_timestamp (ffmpeg_decoder_t *decoder, double timestamp_sec)
 Seek to specific timestamp in media.
 
bool ffmpeg_decoder_at_end (ffmpeg_decoder_t *decoder)
 Check if decoder reached end of stream.
 
double ffmpeg_decoder_get_duration (ffmpeg_decoder_t *decoder)
 Get media duration in seconds.
 
double ffmpeg_decoder_get_position (ffmpeg_decoder_t *decoder)
 Get current playback position in seconds.
 

Detailed Description

FFmpeg-based media decoder implementation.

Definition in file media/ffmpeg_decoder.c.

Macro Definition Documentation

◆ AVIO_BUFFER_SIZE

#define AVIO_BUFFER_SIZE   (64 * 1024)

AVIO buffer size for stdin reading (64KB)

Definition at line 56 of file media/ffmpeg_decoder.c.

◆ TARGET_CHANNELS

#define TARGET_CHANNELS   1

Target audio channels (mono)

Definition at line 53 of file media/ffmpeg_decoder.c.

◆ TARGET_SAMPLE_RATE

#define TARGET_SAMPLE_RATE   48000

Target audio sample rate (48kHz for Opus compatibility)

Definition at line 50 of file media/ffmpeg_decoder.c.