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>12 void 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