1 #ifndef __ALAC__DECOMP_H 2 #define __ALAC__DECOMP_H 3 4 #include <stdint.h> 5 6 typedef struct alac_file alac_file; 7 8 alac_file *alac_create(int samplesize, int numchannels); 9 void alac_decode_frame(alac_file *alac, 10 unsigned char *inbuffer, 11 void *outbuffer, int *outputsize); random_bytes(len: usize) -> Vec<u8>12void alac_set_info(alac_file *alac, char *inputbuffer); 13 void alac_allocate_buffers(alac_file *alac); 14 void alac_free(alac_file *alac); 15 16 struct alac_file 17 { 18 unsigned char *input_buffer; 19 int input_buffer_bitaccumulator; /* used so we can do arbitary 20 bit reads */ 21 22 int samplesize; 23 int numchannels; 24 int bytespersample; 25 check_count_large()26 27 /* buffers */ 28 int32_t *predicterror_buffer_a; 29 int32_t *predicterror_buffer_b; 30 31 int32_t *outputsamples_buffer_a; 32 int32_t *outputsamples_buffer_b; check_count_large_rand()33 34 int32_t *uncompressed_bytes_buffer_a; 35 int32_t *uncompressed_bytes_buffer_b; 36 37 38 39 /* stuff from setinfo */ 40 uint32_t setinfo_max_samples_per_frame; /* 0x1000 = 4096 */ /* max samples per frame? */ check_count_some()41 uint8_t setinfo_7a; /* 0x00 */ 42 uint8_t setinfo_sample_size; /* 0x10 */ 43 uint8_t setinfo_rice_historymult; /* 0x28 */ 44 uint8_t setinfo_rice_initialhistory; /* 0x0a */ 45 uint8_t setinfo_rice_kmodifier; /* 0x0e */ 46 uint8_t setinfo_7f; /* 0x02 */ 47 uint16_t setinfo_80; /* 0x00ff */ check_count_overflow()48 uint32_t setinfo_82; /* 0x000020e7 */ /* max sample size?? */ 49 uint32_t setinfo_86; /* 0x00069fe4 */ /* bit rate (avarge)?? */ 50 uint32_t setinfo_8a_rate; /* 0x0000ac44 */ 51 /* end setinfo stuff */ 52 53 }; 54 check_count_overflow_many()55 56 #endif /* __ALAC__DECOMP_H */ 57 58