ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
network/packet/parsing.h
Go to the documentation of this file.
1
69
70#pragma once
71
72#include <stdint.h>
73#include <stddef.h>
74#include <stdbool.h>
75#include <ascii-chat/buffer.h>
76#include "../../common.h"
77#include "../../audio/audio.h"
78#include "../../util/endian.h"
79
85
123char *packet_decode_frame_data_malloc(const char *frame_data_ptr, size_t frame_data_len, bool is_compressed,
124 uint32_t original_size, uint32_t compressed_size);
125
147asciichat_error_t packet_decode_frame_data_buffer(const char *frame_data_ptr, size_t frame_data_len, bool is_compressed,
148 void *output_buffer, size_t output_size, uint32_t original_size,
149 uint32_t compressed_size);
151asciichat_error_t packet_decode_frame_data_workspace(buffer_workspace_t *workspace, const void *data, size_t length,
152 bool compressed, uint32_t original_size, uint32_t compressed_size);
153
155
161
190
192
200
209static inline asciichat_error_t packet_parse_audio_batch_header(const void *data, size_t len,
210 audio_batch_info_t *out_batch) {
211 // Delegate to the canonical implementation in audio/audio.h
212 return audio_parse_batch_header(data, len, out_batch);
213}
214
216
222
235static inline void packet_read_u32_net(const void *src, uint32_t *out_value) {
236 uint32_t net_value;
237 memcpy(&net_value, src, sizeof(uint32_t));
238 *out_value = NET_TO_HOST_U32(net_value);
239}
240
253static inline void packet_read_u16_net(const void *src, uint16_t *out_value) {
254 uint16_t net_value;
255 memcpy(&net_value, src, sizeof(uint16_t));
256 *out_value = NET_TO_HOST_U16(net_value);
257}
258
260
266
301asciichat_error_t packet_parse_opus_batch(const void *packet_data, size_t packet_len, const uint8_t **out_opus_data,
302 size_t *out_opus_size, const uint16_t **out_frame_sizes, int *out_sample_rate,
303 int *out_frame_duration, int *out_frame_count);
304
306
⚙️ Common definitions, error codes, macros, and types shared throughout the application
🔄 Network byte order conversion helpers
#define NET_TO_HOST_U16(val)
Definition endian.h:111
#define NET_TO_HOST_U32(val)
Definition endian.h:81
unsigned int height
Definition fft.c:23
unsigned int width
Definition fft.c:23
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:61
unsigned int uint32_t
Definition common.h:62
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
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.
asciichat_error_t packet_decode_frame_data_workspace(buffer_workspace_t *workspace, const void *data, size_t length, bool compressed, uint32_t original_size, uint32_t compressed_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.
Owns the temporary storage used by buffer workspace. The data pointers and size or cursor fields desc...
Definition buffer.h:102