ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
packet_parsing.h
Go to the documentation of this file.
1
70#pragma once
71
72#include <stdint.h>
73#include <stddef.h>
74#include <stdbool.h>
75#include "common.h"
76#include "audio/audio.h"
77#include "util/endian.h"
78
122char *packet_decode_frame_data_malloc(const char *frame_data_ptr, size_t frame_data_len, bool is_compressed,
123 uint32_t original_size, uint32_t compressed_size);
124
146asciichat_error_t packet_decode_frame_data_buffer(const char *frame_data_ptr, size_t frame_data_len, bool is_compressed,
147 void *output_buffer, size_t output_size, uint32_t original_size,
148 uint32_t compressed_size);
149
185asciichat_error_t packet_validate_frame_dimensions(uint32_t width, uint32_t height, size_t *out_rgb_size);
186
205static inline asciichat_error_t packet_parse_audio_batch_header(const void *data, size_t len,
206 audio_batch_info_t *out_batch) {
207 // Delegate to the canonical implementation in audio/audio.h
208 return audio_parse_batch_header(data, len, out_batch);
209}
210
231static inline void packet_read_u32_net(const void *src, uint32_t *out_value) {
232 uint32_t net_value;
233 memcpy(&net_value, src, sizeof(uint32_t));
234 *out_value = NET_TO_HOST_U32(net_value);
235}
236
249static inline void packet_read_u16_net(const void *src, uint16_t *out_value) {
250 uint16_t net_value;
251 memcpy(&net_value, src, sizeof(uint16_t));
252 *out_value = NET_TO_HOST_U16(net_value);
253}
254
297asciichat_error_t packet_parse_opus_batch(const void *packet_data, size_t packet_len, const uint8_t **out_opus_data,
298 size_t *out_opus_size, const uint16_t **out_frame_sizes, int *out_sample_rate,
299 int *out_frame_duration, int *out_frame_count);
300
🔄 Network byte order conversion helpers
#define NET_TO_HOST_U16(val)
Definition endian.h:116
#define NET_TO_HOST_U32(val)
Definition endian.h:86
asciichat_error_t audio_parse_batch_header(const void *data, size_t len, audio_batch_info_t *out_batch)
Parse an audio batch packet header from raw packet data.
unsigned short uint16_t
Definition common.h:57
unsigned int uint32_t
Definition common.h:58
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:46
asciichat_error_t packet_parse_opus_batch(const void *packet_data, size_t packet_len, const uint8_t **out_opus_data, size_t *out_opus_size, const uint16_t **out_frame_sizes, int *out_sample_rate, int *out_frame_duration, int *out_frame_count)
Parse Opus audio batch packet header and extract frame data.
asciichat_error_t packet_decode_frame_data_buffer(const char *frame_data_ptr, size_t frame_data_len, bool is_compressed, void *output_buffer, size_t output_size, uint32_t original_size, uint32_t compressed_size)
Decode frame data (fixed buffer version for server handlers)
asciichat_error_t packet_validate_frame_dimensions(uint32_t width, uint32_t height, size_t *out_rgb_size)
Validate frame dimensions and calculate RGB buffer size.
char * packet_decode_frame_data_malloc(const char *frame_data_ptr, size_t frame_data_len, bool is_compressed, uint32_t original_size, uint32_t compressed_size)
Decode frame data (malloc version for client handlers)
🔊 Audio Capture and Playback Interface for ascii-chat
Parsed audio batch packet header information.