ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
opus.h
Go to the documentation of this file.
1
54
55#pragma once
56
57#include <stddef.h>
58#include <stdint.h>
59#include "../common.h"
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65/* ============================================================================
66 * Forward Declarations
67 * ============================================================================ */
68
69typedef struct OpusEncoder OpusEncoder;
70typedef struct OpusDecoder OpusDecoder;
71
74
75/* ============================================================================
76 * Opus Application Modes
77 * ============================================================================ */
78
89
90/* ============================================================================
91 * Codec Context Structure
92 * ============================================================================ */
93
113
114/* ============================================================================
115 * Encoder Functions
116 * ============================================================================ */
117
136opus_codec_t *opus_codec_create_encoder(opus_application_t application, int sample_rate, int bitrate);
137opus_codec_t *opus_codec_create_encoder_channels(opus_application_t application, int sample_rate, int bitrate,
138 int channels);
139
152opus_codec_t *opus_codec_create_decoder_channels(int sample_rate, int channels);
153
171size_t opus_codec_encode(opus_codec_t *codec, const float *samples, int num_samples, uint8_t *out_data,
172 size_t out_size);
173
174/* ============================================================================
175 * Decoder Functions
176 * ============================================================================ */
177
195int opus_codec_decode(opus_codec_t *codec, const uint8_t *data, size_t data_len, float *out_samples,
196 int out_num_samples);
197
198/* ============================================================================
199 * Configuration Functions
200 * ============================================================================ */
201
214
223
236
237/* ============================================================================
238 * Lifecycle Functions
239 * ============================================================================ */
240
251
252#ifdef __cplusplus
253}
254#endif
255
⚙️ Common definitions, error codes, macros, and types shared throughout the application
opus_codec_t * opus_codec_create_decoder(int sample_rate)
Create an Opus decoder.
Definition opus.c:88
asciichat_error_t opus_codec_set_bitrate(opus_codec_t *codec, int bitrate)
Set encoder bitrate.
Definition opus.c:225
asciichat_error_t audio_opus_configure_encoder(OpusEncoder *encoder, int bitrate)
Definition opus.c:21
struct OpusDecoder OpusDecoder
opus_application_t
State for one Opus encoding or decoding direction.
Definition opus.h:84
int opus_codec_decode(opus_codec_t *codec, const uint8_t *data, size_t data_len, float *out_samples, int out_num_samples)
Decode Opus audio frame.
Definition opus.c:176
opus_codec_t * opus_codec_create_encoder(opus_application_t application, int sample_rate, int bitrate)
Create an Opus encoder.
Definition opus.c:35
int opus_codec_get_bitrate(opus_codec_t *codec)
Get current encoder bitrate.
Definition opus.c:243
asciichat_error_t opus_codec_set_dtx(opus_codec_t *codec, int enable)
Enable/disable DTX (Discontinuous Transmission).
Definition opus.c:259
void opus_codec_destroy(opus_codec_t *codec)
Destroy an Opus codec instance.
Definition opus.c:280
size_t opus_codec_encode(opus_codec_t *codec, const float *samples, int num_samples, uint8_t *out_data, size_t out_size)
Encode audio frame with Opus.
Definition opus.c:133
opus_codec_t * opus_codec_create_decoder_channels(int sample_rate, int channels)
Definition opus.c:92
struct OpusEncoder OpusEncoder
opus_codec_t * opus_codec_create_encoder_channels(opus_application_t application, int sample_rate, int bitrate, int channels)
Definition opus.c:39
@ OPUS_APPLICATION_AUDIO
General audio (optimized for music).
Definition opus.h:86
@ OPUS_APPLICATION_RESTRICTED_LOWDELAY
Low-latency mode.
Definition opus.h:87
@ OPUS_APPLICATION_VOIP
Voice over IP (optimized for speech).
Definition opus.h:85
unsigned char uint8_t
Definition common.h:60
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
State for one Opus encoding or decoding direction.
Definition opus.h:105
uint8_t * tmp_buffer
Temporary buffer for internal use.
Definition opus.h:111
int bitrate
Bitrate in bits per second (encoder only).
Definition opus.h:110
int channels
PCM channels (1 or 2); sample counts include all channels.
Definition opus.h:109
int sample_rate
Sample rate in Hz (e.g., 44100).
Definition opus.h:108
OpusEncoder * encoder
Encoder state (NULL if decoder).
Definition opus.h:106
OpusDecoder * decoder
Decoder state (NULL if encoder).
Definition opus.h:107