Available Enums
Error Codes
TgCallerError
typedef enum {
TGCALLER_SUCCESS = 0, // Operation successful
TGCALLER_ERROR_INVALID_PARAMETER, // Invalid parameter passed
TGCALLER_ERROR_NOT_INITIALIZED, // TgCaller not initialized
TGCALLER_ERROR_NOT_CONNECTED, // Not connected to Telegram
TGCALLER_ERROR_ALREADY_CONNECTED, // Already connected
TGCALLER_ERROR_CONNECTION_FAILED, // Connection failed
TGCALLER_ERROR_INVALID_CHAT, // Invalid chat ID
TGCALLER_ERROR_ALREADY_IN_CALL, // Already in call
TGCALLER_ERROR_NOT_IN_CALL, // Not in call
TGCALLER_ERROR_CALL_FAILED, // Call operation failed
TGCALLER_ERROR_STREAM_FAILED, // Stream operation failed
TGCALLER_ERROR_FILE_NOT_FOUND, // Media file not found
TGCALLER_ERROR_INVALID_FORMAT, // Invalid media format
TGCALLER_ERROR_CODEC_ERROR, // Codec error
TGCALLER_ERROR_DEVICE_ERROR, // Audio/video device error
TGCALLER_ERROR_PERMISSION_DENIED, // Permission denied
TGCALLER_ERROR_NETWORK_ERROR, // Network error
TGCALLER_ERROR_TIMEOUT, // Operation timeout
TGCALLER_ERROR_OUT_OF_MEMORY, // Out of memory
TGCALLER_ERROR_UNKNOWN // Unknown error
} TgCallerError;
// Get error string
const char* tgcaller_error_string(TgCallerError error);
Stream Status
TgCallerStreamStatus
typedef enum {
TGCALLER_STREAM_IDLE, // No active stream
TGCALLER_STREAM_LOADING, // Loading stream
TGCALLER_STREAM_PLAYING, // Stream is playing
TGCALLER_STREAM_PAUSED, // Stream is paused
TGCALLER_STREAM_STOPPED, // Stream is stopped
TGCALLER_STREAM_ERROR // Stream error
} TgCallerStreamStatus;
// Get stream status
TgCallerError tgcaller_get_stream_status(TgCaller* caller, int64_t chat_id, TgCallerStreamStatus* status);
Call Status
TgCallerCallStatus
typedef enum {
TGCALLER_CALL_IDLE, // Not in call
TGCALLER_CALL_CONNECTING, // Connecting to call
TGCALLER_CALL_CONNECTED, // Connected to call
TGCALLER_CALL_DISCONNECTING, // Disconnecting from call
TGCALLER_CALL_ERROR // Call error
} TgCallerCallStatus;
// Get call status
TgCallerError tgcaller_get_call_status(TgCaller* caller, int64_t chat_id, TgCallerCallStatus* status);
Codecs
TgCallerCodec
typedef enum {
// Audio codecs
TGCALLER_CODEC_OPUS, // Opus codec (recommended for audio)
TGCALLER_CODEC_AAC, // AAC codec
TGCALLER_CODEC_MP3, // MP3 codec
TGCALLER_CODEC_PCM, // Raw PCM
// Video codecs
TGCALLER_CODEC_H264, // H.264 codec (recommended for video)
TGCALLER_CODEC_VP8, // VP8 codec
TGCALLER_CODEC_VP9, // VP9 codec
TGCALLER_CODEC_AV1 // AV1 codec
} TgCallerCodec;
Media Formats
TgCallerFormat
typedef enum {
TGCALLER_FORMAT_PCM, // Raw PCM audio
TGCALLER_FORMAT_MP3, // MP3 audio
TGCALLER_FORMAT_WAV, // WAV audio
TGCALLER_FORMAT_OGG, // OGG audio
TGCALLER_FORMAT_FLAC, // FLAC audio
TGCALLER_FORMAT_AAC, // AAC audio
TGCALLER_FORMAT_MP4, // MP4 video
TGCALLER_FORMAT_AVI, // AVI video
TGCALLER_FORMAT_MKV, // MKV video
TGCALLER_FORMAT_WEBM, // WebM video
TGCALLER_FORMAT_MOV // MOV video
} TgCallerFormat;
Quality Presets
TgCallerQuality
typedef enum {
TGCALLER_QUALITY_LOW, // Low quality (bandwidth optimized)
TGCALLER_QUALITY_MEDIUM, // Medium quality (balanced)
TGCALLER_QUALITY_HIGH, // High quality (quality optimized)
TGCALLER_QUALITY_ULTRA, // Ultra quality (maximum quality)
TGCALLER_QUALITY_CUSTOM // Custom quality (use specific config)
} TgCallerQuality;
Repeat Modes
TgCallerRepeatMode
typedef enum {
TGCALLER_REPEAT_NONE, // No repeat
TGCALLER_REPEAT_ONE, // Repeat current track
TGCALLER_REPEAT_ALL // Repeat all tracks in queue
} TgCallerRepeatMode;
// Set repeat mode
TgCallerError tgcaller_set_repeat_mode(TgCaller* caller, int64_t chat_id, TgCallerRepeatMode mode);
// Get repeat mode
TgCallerError tgcaller_get_repeat_mode(TgCaller* caller, int64_t chat_id, TgCallerRepeatMode* mode);
Event Types
TgCallerStreamEventType
typedef enum {
TGCALLER_STREAM_STARTED, // Stream started
TGCALLER_STREAM_ENDED, // Stream ended
TGCALLER_STREAM_PAUSED, // Stream paused
TGCALLER_STREAM_RESUMED, // Stream resumed
TGCALLER_STREAM_POSITION, // Position changed
TGCALLER_STREAM_ERROR // Stream error
} TgCallerStreamEventType;
TgCallerCallEventType
typedef enum {
TGCALLER_CALL_JOINED, // Joined call
TGCALLER_CALL_LEFT, // Left call
TGCALLER_CALL_USER_JOINED, // User joined call
TGCALLER_CALL_USER_LEFT, // User left call
TGCALLER_CALL_KICKED, // Kicked from call
TGCALLER_CALL_ERROR // Call error
} TgCallerCallEventType;
Filter Types
TgCallerFilterType
typedef enum {
// Audio filters
TGCALLER_FILTER_ECHO, // Echo effect
TGCALLER_FILTER_REVERB, // Reverb effect
TGCALLER_FILTER_PITCH_SHIFT, // Pitch shifting
TGCALLER_FILTER_DISTORTION, // Distortion effect
TGCALLER_FILTER_NOISE_GATE, // Noise gate
TGCALLER_FILTER_COMPRESSOR, // Audio compressor
TGCALLER_FILTER_EQUALIZER, // Equalizer
// Video filters
TGCALLER_FILTER_BLUR, // Blur effect
TGCALLER_FILTER_SHARPEN, // Sharpen effect
TGCALLER_FILTER_SEPIA, // Sepia effect
TGCALLER_FILTER_GRAYSCALE, // Grayscale effect
TGCALLER_FILTER_COLOR_ADJUST, // Color adjustment
TGCALLER_FILTER_COLOR_BALANCE, // Color balance
TGCALLER_FILTER_EDGE_DETECT, // Edge detection
TGCALLER_FILTER_CARTOON // Cartoon effect
} TgCallerFilterType;
Whisper Models
TgCallerWhisperModel
typedef enum {
TGCALLER_WHISPER_TINY, // Tiny model (~39 MB)
TGCALLER_WHISPER_BASE, // Base model (~74 MB)
TGCALLER_WHISPER_SMALL, // Small model (~244 MB)
TGCALLER_WHISPER_MEDIUM, // Medium model (~769 MB)
TGCALLER_WHISPER_LARGE, // Large model (~1550 MB)
TGCALLER_WHISPER_LARGE_V2, // Large v2 model (~1550 MB)
TGCALLER_WHISPER_LARGE_V3 // Large v3 model (~1550 MB)
} TgCallerWhisperModel;
Log Levels
TgCallerLogLevel
typedef enum {
TGCALLER_LOG_TRACE, // Trace level (most verbose)
TGCALLER_LOG_DEBUG, // Debug level
TGCALLER_LOG_INFO, // Info level
TGCALLER_LOG_WARNING, // Warning level
TGCALLER_LOG_ERROR, // Error level
TGCALLER_LOG_CRITICAL, // Critical level
TGCALLER_LOG_OFF // Logging disabled
} TgCallerLogLevel;
// Set log level
TgCallerError tgcaller_set_log_level(TgCallerLogLevel level);
// Get current log level
TgCallerLogLevel tgcaller_get_log_level(void);
Device Types
TgCallerDeviceType
typedef enum {
TGCALLER_DEVICE_AUDIO_INPUT, // Audio input device (microphone)
TGCALLER_DEVICE_AUDIO_OUTPUT, // Audio output device (speakers)
TGCALLER_DEVICE_VIDEO_INPUT, // Video input device (camera)
TGCALLER_DEVICE_MONITOR // Monitor/display device
} TgCallerDeviceType;
Connection Types
TgCallerConnectionType
typedef enum {
TGCALLER_CONNECTION_UDP, // UDP connection (default)
TGCALLER_CONNECTION_TCP, // TCP connection
TGCALLER_CONNECTION_TLS // TLS connection
} TgCallerConnectionType;
// Set connection type
TgCallerError tgcaller_set_connection_type(TgCaller* caller, TgCallerConnectionType type);
Stream Types
TgCallerStreamType
typedef enum {
TGCALLER_STREAM_AUDIO, // Audio only stream
TGCALLER_STREAM_VIDEO, // Video stream (includes audio)
TGCALLER_STREAM_SCREEN, // Screen sharing stream
TGCALLER_STREAM_MICROPHONE, // Live microphone input
TGCALLER_STREAM_CAMERA, // Live camera input
TGCALLER_STREAM_MIXED // Mixed audio/video stream
} TgCallerStreamType;
Usage Examples
Error Handling
TgCallerError error = tgcaller_join_call(caller, chat_id);
switch (error) {
case TGCALLER_SUCCESS:
printf("Successfully joined call\n");
break;
case TGCALLER_ERROR_NOT_CONNECTED:
fprintf(stderr, "Not connected to Telegram\n");
break;
case TGCALLER_ERROR_INVALID_CHAT:
fprintf(stderr, "Invalid chat ID\n");
break;
case TGCALLER_ERROR_ALREADY_IN_CALL:
fprintf(stderr, "Already in call\n");
break;
default:
fprintf(stderr, "Error: %s\n", tgcaller_error_string(error));
break;
}
Status Checking
TgCallerStreamStatus status;
TgCallerError error = tgcaller_get_stream_status(caller, chat_id, &status);
if (error == TGCALLER_SUCCESS) {
switch (status) {
case TGCALLER_STREAM_PLAYING:
printf("Stream is currently playing\n");
break;
case TGCALLER_STREAM_PAUSED:
printf("Stream is paused\n");
break;
case TGCALLER_STREAM_IDLE:
printf("No active stream\n");
break;
default:
printf("Stream status: %d\n", status);
break;
}
}
Quality Configuration
// Use quality preset
TgCallerVideoConfig config = tgcaller_video_config_default();
config.quality = TGCALLER_QUALITY_HIGH;
// Or use specific codec
config.codec = TGCALLER_CODEC_H264;
config.quality = TGCALLER_QUALITY_CUSTOM;
config.bitrate = 2000000; // 2 Mbps
TgCallerError error = tgcaller_set_video_config(caller, &config);
All enums provide meaningful values that can be used for configuration, status checking, and error handling throughout the TgCaller C API.