LibDriver VS1053B
Loading...
Searching...
No Matches
driver_vs1053b.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_VS1053B_H
38#define DRIVER_VS1053B_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62#ifndef VS1053B_BUFFER_SIZE
63 #define VS1053B_BUFFER_SIZE 512 /* 512 bytes */
64#endif
65
69#if VS1053B_BUFFER_SIZE < 512
70 #error "VS1053B_BUFFER_SIZE < 512"
71#endif
72
76#ifndef VS1053B_OGG_VENC08K1Q00
77 #define VS1053B_OGG_VENC08K1Q00 0
78#endif
79
83#ifndef VS1053B_OGG_VENC08K1Q01
84 #define VS1053B_OGG_VENC08K1Q01 0
85#endif
86
90#ifndef VS1053B_OGG_VENC08K1Q02
91 #define VS1053B_OGG_VENC08K1Q02 0
92#endif
93
97#ifndef VS1053B_OGG_VENC08K1Q03
98 #define VS1053B_OGG_VENC08K1Q03 0
99#endif
100
104#ifndef VS1053B_OGG_VENC08K1Q04
105 #define VS1053B_OGG_VENC08K1Q04 0
106#endif
107
111#ifndef VS1053B_OGG_VENC08K1Q05
112 #define VS1053B_OGG_VENC08K1Q05 0
113#endif
114
118#ifndef VS1053B_OGG_VENC08K1Q06
119 #define VS1053B_OGG_VENC08K1Q06 0
120#endif
121
125#ifndef VS1053B_OGG_VENC08K1Q07
126 #define VS1053B_OGG_VENC08K1Q07 0
127#endif
128
132#ifndef VS1053B_OGG_VENC08K1Q08
133 #define VS1053B_OGG_VENC08K1Q08 0
134#endif
135
139#ifndef VS1053B_OGG_VENC08K1Q09
140 #define VS1053B_OGG_VENC08K1Q09 0
141#endif
142
146#ifndef VS1053B_OGG_VENC08K1Q10
147 #define VS1053B_OGG_VENC08K1Q10 0
148#endif
149
153#ifndef VS1053B_OGG_VENC16K1Q00
154 #define VS1053B_OGG_VENC16K1Q00 0
155#endif
156
160#ifndef VS1053B_OGG_VENC16K1Q01
161 #define VS1053B_OGG_VENC16K1Q01 0
162#endif
163
167#ifndef VS1053B_OGG_VENC16K1Q02
168 #define VS1053B_OGG_VENC16K1Q02 0
169#endif
170
174#ifndef VS1053B_OGG_VENC16K1Q03
175 #define VS1053B_OGG_VENC16K1Q03 0
176#endif
177
181#ifndef VS1053B_OGG_VENC16K1Q04
182 #define VS1053B_OGG_VENC16K1Q04 0
183#endif
184
188#ifndef VS1053B_OGG_VENC16K1Q05
189 #define VS1053B_OGG_VENC16K1Q05 0
190#endif
191
195#ifndef VS1053B_OGG_VENC16K1Q06
196 #define VS1053B_OGG_VENC16K1Q06 0
197#endif
198
202#ifndef VS1053B_OGG_VENC16K1Q07
203 #define VS1053B_OGG_VENC16K1Q07 0
204#endif
205
209#ifndef VS1053B_OGG_VENC16K1Q08
210 #define VS1053B_OGG_VENC16K1Q08 0
211#endif
212
216#ifndef VS1053B_OGG_VENC16K1Q09
217 #define VS1053B_OGG_VENC16K1Q09 0
218#endif
219
223#ifndef VS1053B_OGG_VENC16K1Q10
224 #define VS1053B_OGG_VENC16K1Q10 0
225#endif
226
230#ifndef VS1053B_OGG_VENC16K2Q00
231 #define VS1053B_OGG_VENC16K2Q00 0
232#endif
233
237#ifndef VS1053B_OGG_VENC16K2Q01
238 #define VS1053B_OGG_VENC16K2Q01 0
239#endif
240
244#ifndef VS1053B_OGG_VENC16K2Q02
245 #define VS1053B_OGG_VENC16K2Q02 0
246#endif
247
251#ifndef VS1053B_OGG_VENC16K2Q03
252 #define VS1053B_OGG_VENC16K2Q03 0
253#endif
254
258#ifndef VS1053B_OGG_VENC16K2Q04
259 #define VS1053B_OGG_VENC16K2Q04 0
260#endif
261
265#ifndef VS1053B_OGG_VENC16K2Q05
266 #define VS1053B_OGG_VENC16K2Q05 0
267#endif
268
272#ifndef VS1053B_OGG_VENC16K2Q06
273 #define VS1053B_OGG_VENC16K2Q06 0
274#endif
275
279#ifndef VS1053B_OGG_VENC16K2Q07
280 #define VS1053B_OGG_VENC16K2Q07 0
281#endif
282
286#ifndef VS1053B_OGG_VENC16K2Q08
287 #define VS1053B_OGG_VENC16K2Q08 0
288#endif
289
293#ifndef VS1053B_OGG_VENC16K2Q09
294 #define VS1053B_OGG_VENC16K2Q09 0
295#endif
296
300#ifndef VS1053B_OGG_VENC16K2Q10
301 #define VS1053B_OGG_VENC16K2Q10 0
302#endif
303
307#ifndef VS1053B_OGG_VENC44K1Q00
308 #define VS1053B_OGG_VENC44K1Q00 0
309#endif
310
314#ifndef VS1053B_OGG_VENC44K1Q01
315 #define VS1053B_OGG_VENC44K1Q01 0
316#endif
317
321#ifndef VS1053B_OGG_VENC44K1Q02
322 #define VS1053B_OGG_VENC44K1Q02 0
323#endif
324
328#ifndef VS1053B_OGG_VENC44K1Q03
329 #define VS1053B_OGG_VENC44K1Q03 0
330#endif
331
335#ifndef VS1053B_OGG_VENC44K1Q04
336 #define VS1053B_OGG_VENC44K1Q04 0
337#endif
338
342#ifndef VS1053B_OGG_VENC44K1Q05
343 #define VS1053B_OGG_VENC44K1Q05 0
344#endif
345
349#ifndef VS1053B_OGG_VENC44K2Q00
350 #define VS1053B_OGG_VENC44K2Q00 0
351#endif
352
356#ifndef VS1053B_OGG_VENC44K2Q01
357 #define VS1053B_OGG_VENC44K2Q01 0
358#endif
359
363#ifndef VS1053B_OGG_VENC44K2Q02
364 #define VS1053B_OGG_VENC44K2Q02 0
365#endif
366
370#ifndef VS1053B_OGG_VENC44K2Q03
371 #define VS1053B_OGG_VENC44K2Q03 0
372#endif
373
377#ifndef VS1053B_OGG_VENC44K2Q04
378 #define VS1053B_OGG_VENC44K2Q04 0
379#endif
380
384#ifndef VS1053B_OGG_VENC44K2Q05
385 #define VS1053B_OGG_VENC44K2Q05 1
386#endif
387
391#define VS1053B_AICTRL3_MODE_IMA ADPCM (0 << 2)
392#define VS1053B_AICTRL3_MODE_LINEAR_PCM (1 << 2)
393#define VS1053B_AICTRL3_ADC_JOINT_STEREO (0 << 0)
394#define VS1053B_AICTRL3_ADC_DUAL_CHANNEL (1 << 0)
395#define VS1053B_AICTRL3_ADC_LEFT_CHANNEL (2 << 0)
396#define VS1053B_AICTRL3_ADC_RIGHT_CHANNEL (3 << 0)
397
401typedef enum
402{
406
415
424
433
442
451
460
469
484
495
504
515
526
541
557
561typedef enum
562{
611
621
630
640
644typedef struct vs1053b_wav_s
645{
646 char chunk_id[4];
647 uint32_t chunk_size;
648 char format[4];
651 uint16_t audio_format;
652 uint16_t num_channel;
653 uint32_t sample_rate;
654 uint32_t byte_rate;
655 uint16_t block_align;
656 uint16_t bit_per_sample;
660
664typedef struct vs1053b_handle_s
665{
666 uint8_t (*reset_gpio_init)(void);
667 uint8_t (*reset_gpio_deinit)(void);
668 uint8_t (*reset_gpio_write)(uint8_t data);
669 uint8_t (*dreq_gpio_init)(void);
670 uint8_t (*dreq_gpio_deinit)(void);
671 uint8_t (*dreq_gpio_read)(uint8_t *data);
672 uint8_t (*spi_cmd_init)(void);
673 uint8_t (*spi_cmd_deinit)(void);
674 uint8_t (*spi_cmd_read_address16)(uint16_t addr, uint8_t *buf, uint16_t len);
675 uint8_t (*spi_cmd_write_address16)(uint16_t addr, uint8_t *buf, uint16_t len);
676 uint8_t (*spi_dat_init)(void);
677 uint8_t (*spi_dat_deinit)(void);
678 uint8_t (*spi_dat_write_cmd)(uint8_t *buf, uint16_t len);
679 void (*delay_ms)(uint32_t ms);
680 void (*debug_print)(const char *const fmt, ...);
681 void (*receive_callback)(uint8_t type, uint32_t cur_pos);
682 uint8_t (*audio_init)(uint8_t type, char *name, uint32_t *size);
683 uint8_t (*audio_deinit)(void);
684 uint8_t (*audio_read)(uint32_t addr, uint16_t size, uint8_t *buffer);
685 uint8_t (*audio_write)(uint32_t addr, uint16_t size, uint8_t *buffer);
686 void (*timestamp_read)(uint32_t *sec, uint32_t *us);
688 uint8_t inited;
689 uint8_t record_type;
691 uint8_t status;
692 uint8_t pause;
693 uint32_t cur_pos;
694 uint32_t buf_pos;
695 uint32_t size;
696 uint64_t timestamp;
697 uint64_t period;
701
717
721
728
735#define DRIVER_VS1053B_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
736
743#define DRIVER_VS1053B_LINK_SPI_CMD_INIT(HANDLE, FUC) (HANDLE)->spi_cmd_init = FUC
744
751#define DRIVER_VS1053B_LINK_SPI_CMD_DEINIT(HANDLE, FUC) (HANDLE)->spi_cmd_deinit = FUC
752
759#define DRIVER_VS1053B_LINK_SPI_READ_ADDRESS16(HANDLE, FUC) (HANDLE)->spi_cmd_read_address16 = FUC
760
767#define DRIVER_VS1053B_LINK_SPI_WRITE_ADDRESS16(HANDLE, FUC) (HANDLE)->spi_cmd_write_address16 = FUC
768
775#define DRIVER_VS1053B_LINK_SPI_DAT_INIT(HANDLE, FUC) (HANDLE)->spi_dat_init = FUC
776
783#define DRIVER_VS1053B_LINK_SPI_DAT_DEINIT(HANDLE, FUC) (HANDLE)->spi_dat_deinit = FUC
784
791#define DRIVER_VS1053B_LINK_SPI_DAT_WRITE_CMD(HANDLE, FUC) (HANDLE)->spi_dat_write_cmd = FUC
792
799#define DRIVER_VS1053B_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
800
807#define DRIVER_VS1053B_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
808
815#define DRIVER_VS1053B_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
816
823#define DRIVER_VS1053B_LINK_DREQ_GPIO_INIT(HANDLE, FUC) (HANDLE)->dreq_gpio_init = FUC
824
831#define DRIVER_VS1053B_LINK_DREQ_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->dreq_gpio_deinit = FUC
832
839#define DRIVER_VS1053B_LINK_DREQ_GPIO_READ(HANDLE, FUC) (HANDLE)->dreq_gpio_read = FUC
840
847#define DRIVER_VS1053B_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
848
855#define DRIVER_VS1053B_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
856
863#define DRIVER_VS1053B_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
864
871#define DRIVER_VS1053B_LINK_AUDIO_INIT(HANDLE, FUC) (HANDLE)->audio_init = FUC
872
879#define DRIVER_VS1053B_LINK_AUDIO_DEINIT(HANDLE, FUC) (HANDLE)->audio_deinit = FUC
880
887#define DRIVER_VS1053B_LINK_AUDIO_READ(HANDLE, FUC) (HANDLE)->audio_read = FUC
888
895#define DRIVER_VS1053B_LINK_AUDIO_WRITE(HANDLE, FUC) (HANDLE)->audio_write = FUC
896
903#define DRIVER_VS1053B_LINK_TIMESTAMP_READ(HANDLE, FUC) (HANDLE)->timestamp_read = FUC
904
908
915
924uint8_t vs1053b_info(vs1053b_info_t *info);
925
938uint8_t vs1053b_init(vs1053b_handle_t *handle);
939
951uint8_t vs1053b_deinit(vs1053b_handle_t *handle);
952
965uint8_t vs1053b_play(vs1053b_handle_t *handle, char *path);
966
981uint8_t vs1053b_record(vs1053b_handle_t *handle, char *path, uint32_t sample_rate);
982
994
1006
1017uint8_t vs1053b_pause(vs1053b_handle_t *handle);
1018
1031uint8_t vs1053b_stop(vs1053b_handle_t *handle);
1032
1045uint8_t vs1053b_process(vs1053b_handle_t *handle);
1046
1059uint8_t vs1053b_set_period_callback(vs1053b_handle_t *handle, uint32_t second, uint32_t microsecond, vs1053b_bool_t enable);
1060
1073uint8_t vs1053b_get_period_callback(vs1053b_handle_t *handle, uint32_t *second, uint32_t *microsecond, vs1053b_bool_t *enable);
1074
1087uint8_t vs1053b_parse_info(vs1053b_handle_t *handle, uint16_t dat0, uint16_t dat1, vs1053b_audio_info_t *info);
1088
1099uint8_t vs1053b_hard_reset(vs1053b_handle_t *handle);
1100
1112uint8_t vs1053b_set_diff(vs1053b_handle_t *handle, vs1053b_diff_t diff);
1113
1125uint8_t vs1053b_get_diff(vs1053b_handle_t *handle, vs1053b_diff_t *diff);
1126
1139
1152
1165
1178
1191
1204
1217
1230
1243
1256
1269
1282
1295
1308
1321
1334
1347
1360
1373
1386
1399
1412
1425
1438
1451
1463uint8_t vs1053b_get_selector(vs1053b_handle_t *handle, vs1053b_selector_t *selector);
1464
1477
1490
1503
1516
1529uint8_t vs1053b_set_swing(vs1053b_handle_t *handle, uint8_t swing);
1530
1542uint8_t vs1053b_get_swing(vs1053b_handle_t *handle, uint8_t *swing);
1543
1555uint8_t vs1053b_swing_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg);
1556
1568uint8_t vs1053b_swing_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db);
1569
1582
1595
1608
1621
1633uint8_t vs1053b_get_version(vs1053b_handle_t *handle, uint8_t *version);
1634
1647
1660
1673
1686
1699
1711uint8_t vs1053b_get_ad_clock(vs1053b_handle_t *handle, vs1053b_ad_clock_t *ad_clock);
1712
1725
1738
1751uint8_t vs1053b_set_treble_control(vs1053b_handle_t *handle, uint8_t db);
1752
1764uint8_t vs1053b_get_treble_control(vs1053b_handle_t *handle, uint8_t *db);
1765
1777uint8_t vs1053b_treble_control_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg);
1778
1790uint8_t vs1053b_treble_control_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db);
1791
1805
1818
1830uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg);
1831
1843uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, uint32_t *hz);
1844
1857uint8_t vs1053b_set_bass_enhancement(vs1053b_handle_t *handle, uint8_t db);
1858
1870uint8_t vs1053b_get_bass_enhancement(vs1053b_handle_t *handle, uint8_t *db);
1871
1885
1897uint8_t vs1053b_get_lower_limit_frequency_in_10_hz(vs1053b_handle_t *handle, uint8_t *step);
1898
1910uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg);
1911
1923uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, uint32_t *hz);
1924
1937
1950
1963
1976
1989uint8_t vs1053b_set_clock_frequency(vs1053b_handle_t *handle, uint16_t clk);
1990
2002uint8_t vs1053b_get_clock_frequency(vs1053b_handle_t *handle, uint16_t *clk);
2003
2015uint8_t vs1053b_clock_frequency_convert_to_register(vs1053b_handle_t *handle, float hz, uint16_t *reg);
2016
2028uint8_t vs1053b_clock_frequency_convert_to_data(vs1053b_handle_t *handle, uint16_t reg, float *hz);
2029
2041uint8_t vs1053b_set_decode_time(vs1053b_handle_t *handle, uint16_t decode_time);
2042
2054uint8_t vs1053b_get_decode_time(vs1053b_handle_t *handle, uint16_t *decode_time);
2055
2068uint8_t vs1053b_set_sample_rate(vs1053b_handle_t *handle, uint16_t rate, vs1053b_channel_t channel);
2069
2082uint8_t vs1053b_get_sample_rate(vs1053b_handle_t *handle, uint16_t *rate, vs1053b_channel_t *channel);
2083
2096uint8_t vs1053b_write_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len);
2097
2110uint8_t vs1053b_read_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len);
2111
2123uint8_t vs1053b_set_ram_address(vs1053b_handle_t *handle, uint16_t addr);
2124
2137uint8_t vs1053b_get_hdata(vs1053b_handle_t *handle, uint16_t *dat0, uint16_t *dat1);
2138
2150uint8_t vs1053b_get_hdata0(vs1053b_handle_t *handle, uint16_t *dat0);
2151
2163uint8_t vs1053b_get_hdata1(vs1053b_handle_t *handle, uint16_t *dat1);
2164
2176uint8_t vs1053b_set_start_address(vs1053b_handle_t *handle, uint16_t addr);
2177
2189uint8_t vs1053b_get_start_address(vs1053b_handle_t *handle, uint16_t *addr);
2190
2203uint8_t vs1053b_set_vol(vs1053b_handle_t *handle, uint8_t left, uint8_t right);
2204
2217uint8_t vs1053b_get_vol(vs1053b_handle_t *handle, uint8_t *left, uint8_t *right);
2218
2230uint8_t vs1053b_vol_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg);
2231
2243uint8_t vs1053b_vol_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db);
2244
2258uint8_t vs1053b_write_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len);
2259
2273uint8_t vs1053b_read_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len);
2274
2287
2300
2312uint8_t vs1053b_get_byte_rate(vs1053b_handle_t *handle, uint16_t *rate);
2313
2325uint8_t vs1053b_get_end_fill_byte(vs1053b_handle_t *handle, uint16_t *byte);
2326
2339uint8_t vs1053b_get_patch(vs1053b_handle_t *handle, vs1053b_patch_t type, const uint16_t **patch_addr, uint16_t *len);
2340
2354uint8_t vs1053b_load_patch(vs1053b_handle_t *handle, const uint16_t *patch, uint16_t len);
2355
2368
2380uint8_t vs1053b_get_iis_mclk(vs1053b_handle_t *handle, vs1053b_bool_t *enable);
2381
2393uint8_t vs1053b_set_iis(vs1053b_handle_t *handle, vs1053b_bool_t enable);
2394
2406uint8_t vs1053b_get_iis(vs1053b_handle_t *handle, vs1053b_bool_t *enable);
2407
2420
2432uint8_t vs1053b_get_iis_rate(vs1053b_handle_t *handle, vs1053b_iis_rate_t *iis_rate);
2433
2445uint8_t vs1053b_set_gpio_direction(vs1053b_handle_t *handle, uint16_t mask);
2446
2458uint8_t vs1053b_get_gpio_direction(vs1053b_handle_t *handle, uint16_t *mask);
2459
2471uint8_t vs1053b_get_gpio_input(vs1053b_handle_t *handle, uint16_t *data);
2472
2484uint8_t vs1053b_set_gpio_output(vs1053b_handle_t *handle, uint16_t data);
2485
2497uint8_t vs1053b_get_gpio_output(vs1053b_handle_t *handle, uint16_t *data);
2498
2502
2509
2523uint8_t vs1053b_set_reg(vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
2524
2538uint8_t vs1053b_get_reg(vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
2539
2552uint8_t vs1053b_set_data(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len);
2553
2557
2561
2562#ifdef __cplusplus
2563}
2564#endif
2565
2566#endif
uint8_t vs1053b_get_version(vs1053b_handle_t *handle, uint8_t *version)
get version
uint8_t vs1053b_set_iis_mclk(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable iis mclk
uint8_t vs1053b_parse_info(vs1053b_handle_t *handle, uint16_t dat0, uint16_t dat1, vs1053b_audio_info_t *info)
parse info
uint8_t vs1053b_set_swing(vs1053b_handle_t *handle, uint8_t swing)
set swing
uint8_t vs1053b_get_overload_indicator(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get overload indicator status
uint8_t vs1053b_set_treble_control(vs1053b_handle_t *handle, uint8_t db)
set treble control
uint8_t vs1053b_set_ad_clock(vs1053b_handle_t *handle, vs1053b_ad_clock_t ad_clock)
set ad clock
uint8_t vs1053b_set_clock_multiplier(vs1053b_handle_t *handle, vs1053b_clock_multiplier_t multiplier)
set clock multiplier
uint8_t vs1053b_get_diff(vs1053b_handle_t *handle, vs1053b_diff_t *diff)
get the audio differential
uint8_t vs1053b_get_lower_limit_frequency_in_1000_hz(vs1053b_handle_t *handle, uint8_t *step)
get lower limit frequency in 1000 hz
uint8_t vs1053b_set_reference_voltage(vs1053b_handle_t *handle, vs1053b_reference_voltage_t voltage)
set reference voltage
uint8_t vs1053b_set_period_callback(vs1053b_handle_t *handle, uint32_t second, uint32_t microsecond, vs1053b_bool_t enable)
set period callback
uint8_t vs1053b_get_end_fill_byte(vs1053b_handle_t *handle, uint16_t *byte)
get end fill byte
uint8_t vs1053b_get_iis(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get iis status
uint8_t vs1053b_get_ear_speaker_high_setting(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get ear speaker high setting status
uint8_t vs1053b_set_analog_internal_power_down(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable analog internal power down
uint8_t vs1053b_vol_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db)
convert the register raw data to vol
uint8_t vs1053b_get_allow_sdi_test(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get allow sdi test status
uint8_t vs1053b_swing_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert the swing to the register raw data
uint8_t vs1053b_set_lower_limit_frequency_in_10_hz(vs1053b_handle_t *handle, uint8_t step)
set lower limit frequency in 10 hz
uint8_t vs1053b_stop(vs1053b_handle_t *handle)
stop audio
uint8_t vs1053b_set_vol(vs1053b_handle_t *handle, uint8_t left, uint8_t right)
set vol
uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg)
convert the lower limit frequency in 1000 hz to the register raw data
uint8_t vs1053b_get_lower_limit_frequency_in_10_hz(vs1053b_handle_t *handle, uint8_t *step)
get lower limit frequency in 10 hz
uint8_t vs1053b_read_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
read ram
vs1053b_type_t
vs1053b type enumeration definition
uint8_t vs1053b_get_play_speed(vs1053b_handle_t *handle, vs1053b_play_speed_t *speed)
get play speed
uint8_t vs1053b_process(vs1053b_handle_t *handle)
audio process
uint8_t vs1053b_set_selector(vs1053b_handle_t *handle, vs1053b_selector_t selector)
set selector
uint8_t vs1053b_clock_frequency_convert_to_register(vs1053b_handle_t *handle, float hz, uint16_t *reg)
convert the clock frequency to the register raw data
uint8_t vs1053b_get_gpio_output(vs1053b_handle_t *handle, uint16_t *data)
get gpio output
uint8_t vs1053b_get_pcm_adpcm_recording_active(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get pcm adpcm recording active status
uint8_t vs1053b_set_do_not_jump(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable do not jump
uint8_t vs1053b_get_stream_mode(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get stream mode status
vs1053b_ad_clock_t
vs1053b ad clock enumeration definition
uint8_t vs1053b_get_mpeg_layer_i_and_ii(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get mpeg layer i and ii status
uint8_t vs1053b_get_bass_enhancement(vs1053b_handle_t *handle, uint8_t *db)
get bass enhancement
uint8_t vs1053b_get_clock_frequency(vs1053b_handle_t *handle, uint16_t *clk)
get clock frequency
uint8_t vs1053b_get_period_callback(vs1053b_handle_t *handle, uint32_t *second, uint32_t *microsecond, vs1053b_bool_t *enable)
get period callback
vs1053b_reference_voltage_t
vs1053b reference voltage enumeration definition
vs1053b_bit_order_t
vs1053b bit order enumeration definition
vs1053b_format_t
vs1053b format enumeration definition
vs1053b_allowed_multiplier_addition_t
vs1053b allowed multiplier addition enumeration definition
uint8_t vs1053b_get_clock_multiplier(vs1053b_handle_t *handle, vs1053b_clock_multiplier_t *multiplier)
get clock multiplier
vs1053b_diff_t
vs1053b diff enumeration definition
uint8_t vs1053b_get_gpio_direction(vs1053b_handle_t *handle, uint16_t *mask)
get gpio direction
uint8_t vs1053b_set_sample_rate(vs1053b_handle_t *handle, uint16_t rate, vs1053b_channel_t channel)
set sample rate
vs1053b_bool_t
vs1053b bool enumeration definition
uint8_t vs1053b_set_decode_time(vs1053b_handle_t *handle, uint16_t decode_time)
set decode time
uint8_t vs1053b_get_hdata0(vs1053b_handle_t *handle, uint16_t *dat0)
get hdata0
vs1053b_selector_t
vs1053b selector enumeration definition
uint8_t vs1053b_set_gpio_direction(vs1053b_handle_t *handle, uint16_t mask)
set gpio direction
uint8_t vs1053b_get_gpio_input(vs1053b_handle_t *handle, uint16_t *data)
get gpio input
uint8_t vs1053b_get_share_spi_chip_select(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get share spi chip select status
uint8_t vs1053b_get_soft_reset(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get soft reset status
uint8_t vs1053b_set_native_spi_modes(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable native spi modes
uint8_t vs1053b_get_selector(vs1053b_handle_t *handle, vs1053b_selector_t *selector)
get selector
uint8_t vs1053b_init(vs1053b_handle_t *handle)
initialize the chip
uint8_t vs1053b_set_cancel_decoding_current_file(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable cancel decoding current file
vs1053b_patch_t
vs1053b patch enumeration definition
uint8_t vs1053b_set_start_address(vs1053b_handle_t *handle, uint16_t addr)
set start address
uint8_t vs1053b_get_swing(vs1053b_handle_t *handle, uint8_t *swing)
get swing
vs1053b_dclk_edge_t
vs1053b dclk edge enumeration definition
uint8_t vs1053b_set_stream_mode(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable stream mode
uint8_t vs1053b_get_allowed_multiplier_addition(vs1053b_handle_t *handle, vs1053b_allowed_multiplier_addition_t *addition)
get allowed multiplier addition
uint8_t vs1053b_get_decode_time(vs1053b_handle_t *handle, uint16_t *decode_time)
get decode time
uint8_t vs1053b_get_treble_control(vs1053b_handle_t *handle, uint8_t *db)
get treble control
uint8_t vs1053b_set_iis_rate(vs1053b_handle_t *handle, vs1053b_iis_rate_t iis_rate)
set iis rate
uint8_t vs1053b_read_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len)
read application
uint8_t vs1053b_write_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len)
write application
#define VS1053B_BUFFER_SIZE
vs1053b buffer size definition
uint8_t vs1053b_set_dclk_edge(vs1053b_handle_t *handle, vs1053b_dclk_edge_t edge)
set dclk edge
uint8_t vs1053b_get_dclk_edge(vs1053b_handle_t *handle, vs1053b_dclk_edge_t *edge)
get dclk edge
uint8_t vs1053b_set_analog_driver_power_down(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable analog driver power down
uint8_t vs1053b_set_play_speed(vs1053b_handle_t *handle, vs1053b_play_speed_t speed)
set play speed
uint8_t vs1053b_set_pcm_adpcm_recording_active(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable pcm adpcm recording active
uint8_t vs1053b_set_clock_frequency(vs1053b_handle_t *handle, uint16_t clk)
set clock frequency
uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, uint32_t *hz)
convert the register raw data to the lower limit frequency in 1000 hz
uint8_t vs1053b_hard_reset(vs1053b_handle_t *handle)
hard reset
uint8_t vs1053b_get_iis_mclk(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get iis mclk status
uint8_t vs1053b_get_analog_internal_power_down(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get analog internal power down status
vs1053b_clock_range_t
vs1053b clock range enumeration definition
uint8_t vs1053b_set_ear_speaker_low_setting(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable ear speaker low setting
uint8_t vs1053b_clock_frequency_convert_to_data(vs1053b_handle_t *handle, uint16_t reg, float *hz)
convert the register raw data to the clock frequency
uint8_t vs1053b_set_record_format(vs1053b_handle_t *handle, vs1053b_record_format_t format)
set record format
uint8_t vs1053b_set_clock_range(vs1053b_handle_t *handle, vs1053b_clock_range_t range)
set clock range
uint8_t vs1053b_get_patch(vs1053b_handle_t *handle, vs1053b_patch_t type, const uint16_t **patch_addr, uint16_t *len)
get patch info
uint8_t vs1053b_set_diff(vs1053b_handle_t *handle, vs1053b_diff_t diff)
set the audio differential
uint8_t vs1053b_get_do_not_jump(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get do not jump status
uint8_t vs1053b_get_cancel_decoding_current_file(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get cancel decoding current file status
uint8_t vs1053b_get_overload_detection(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get overload detection status
uint8_t vs1053b_get_record_format(vs1053b_handle_t *handle, vs1053b_record_format_t *format)
get record format
uint8_t vs1053b_set_ear_speaker_high_setting(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable ear speaker high setting
uint8_t vs1053b_treble_control_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db)
convert the register raw data to the treble control
uint8_t vs1053b_set_share_spi_chip_select(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable share spi chip select
uint8_t vs1053b_vol_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert vol to the register raw data
uint8_t vs1053b_set_soft_reset(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable soft reset
vs1053b_application_t
vs1053b application enumeration definition
uint8_t vs1053b_get_reference_voltage(vs1053b_handle_t *handle, vs1053b_reference_voltage_t *voltage)
get reference voltage
uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, uint32_t *hz)
convert the register raw data to the lower limit frequency in 10 hz
uint8_t vs1053b_get_analog_driver_power_down(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get analog driver power down status
uint8_t vs1053b_set_ram_address(vs1053b_handle_t *handle, uint16_t addr)
set ram address
vs1053b_record_format_t
vs1053b record format enumeration definition
uint8_t vs1053b_set_overload_indicator(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable overload indicator
struct vs1053b_handle_s vs1053b_handle_t
vs1053b handle structure definition
vs1053b_play_speed_t
vs1053b play speed enumeration definition
uint8_t vs1053b_set_allow_sdi_test(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable allow sdi test
uint8_t vs1053b_get_sdi_bit_order(vs1053b_handle_t *handle, vs1053b_bit_order_t *order)
get sdi bit order
uint8_t vs1053b_set_overload_detection(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable overload detection
uint8_t vs1053b_treble_control_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert the treble control to the register raw data
struct vs1053b_audio_info_s vs1053b_audio_info_t
vs1053b audio info structure definition
uint8_t vs1053b_deinit(vs1053b_handle_t *handle)
deinit the chip
vs1053b_iis_rate_t
vs1053b iis rate enumeration definition
uint8_t vs1053b_set_iis(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable iis
struct vs1053b_wav_s vs1053b_wav_t
vs1053b wav structure definition
uint8_t vs1053b_set_allowed_multiplier_addition(vs1053b_handle_t *handle, vs1053b_allowed_multiplier_addition_t addition)
set allowed multiplier addition
uint8_t vs1053b_set_sdi_bit_order(vs1053b_handle_t *handle, vs1053b_bit_order_t order)
set sdi bit order
uint8_t vs1053b_get_start_address(vs1053b_handle_t *handle, uint16_t *addr)
get start address
struct vs1053b_info_s vs1053b_info_t
vs1053b information structure definition
uint8_t vs1053b_set_gpio_output(vs1053b_handle_t *handle, uint16_t data)
set gpio output
uint8_t vs1053b_get_vol(vs1053b_handle_t *handle, uint8_t *left, uint8_t *right)
get vol
vs1053b_clock_multiplier_t
vs1053b clock multiplier enumeration definition
uint8_t vs1053b_get_iis_rate(vs1053b_handle_t *handle, vs1053b_iis_rate_t *iis_rate)
get iis rate
uint8_t vs1053b_get_ad_clock(vs1053b_handle_t *handle, vs1053b_ad_clock_t *ad_clock)
get ad clock
uint8_t vs1053b_info(vs1053b_info_t *info)
get chip's information
uint8_t vs1053b_get_byte_rate(vs1053b_handle_t *handle, uint16_t *rate)
get byte rate
uint8_t vs1053b_get_hdata(vs1053b_handle_t *handle, uint16_t *dat0, uint16_t *dat1)
get hdata
uint8_t vs1053b_record(vs1053b_handle_t *handle, char *path, uint32_t sample_rate)
record audio
uint8_t vs1053b_play(vs1053b_handle_t *handle, char *path)
play audio
uint8_t vs1053b_load_patch(vs1053b_handle_t *handle, const uint16_t *patch, uint16_t len)
load patch
uint8_t vs1053b_pause(vs1053b_handle_t *handle)
pause audio
uint8_t vs1053b_write_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
write ram
uint8_t vs1053b_get_hdata1(vs1053b_handle_t *handle, uint16_t *dat1)
get hdata1
vs1053b_channel_t
vs1053b channel enumeration definition
uint8_t vs1053b_get_native_spi_modes(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get native spi modes status
uint8_t vs1053b_set_bass_enhancement(vs1053b_handle_t *handle, uint8_t db)
set bass enhancement
uint8_t vs1053b_set_lower_limit_frequency_in_1000_hz(vs1053b_handle_t *handle, uint8_t step)
set lower limit frequency in 1000 hz
uint8_t vs1053b_get_sample_rate(vs1053b_handle_t *handle, uint16_t *rate, vs1053b_channel_t *channel)
get sample rate
uint8_t vs1053b_swing_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db)
convert the register raw data to the swing
uint8_t vs1053b_set_mpeg_layer_i_and_ii(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable mpeg layer i and ii
uint8_t vs1053b_get_ear_speaker_low_setting(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get ear speaker low setting status
uint8_t vs1053b_get_clock_range(vs1053b_handle_t *handle, vs1053b_clock_range_t *range)
get clock range
uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg)
convert the lower limit frequency in 10 hz to the register raw data
@ VS1053B_TYPE_PERIOD
@ VS1053B_TYPE_PLAY_END
@ VS1053B_TYPE_PLAY_WRITE
@ VS1053B_TYPE_RECORD_END
@ VS1053B_TYPE_RECORD_READ
@ VS1053B_TYPE_RECORD_WRITE
@ VS1053B_TYPE_RECORD_OVER
@ VS1053B_TYPE_PLAY_READ
@ VS1053B_AD_CLCOK_3MHZ
@ VS1053B_AD_CLOCK_6MHZ
@ VS1053B_REFERENCE_VOLTAGE_1P23V
@ VS1053B_REFERENCE_VOLTAGE_1P65V
@ VS1053B_BIT_ORDER_MSB_LAST
@ VS1053B_BIT_ORDER_MSB_FIRST
@ VS1053B_FORMAT_AAC_MP4
@ VS1053B_FORMAT_WAV
@ VS1053B_FORMAT_MP3
@ VS1053B_FORMAT_AAC_ADTS
@ VS1053B_FORMAT_WMA
@ VS1053B_FORMAT_FLAC
@ VS1053B_FORMAT_OGG
@ VS1053B_FORMAT_MIDI
@ VS1053B_FORMAT_AAC_ADIF
@ VS1053B_ALLOWED_MULTIPLIER_ADDITION_NONE
@ VS1053B_ALLOWED_MULTIPLIER_ADDITION_1P0_XTALI
@ VS1053B_ALLOWED_MULTIPLIER_ADDITION_2P0_XTALI
@ VS1053B_ALLOWED_MULTIPLIER_ADDITION_1P5_XTALI
@ VS1053B_DIFF_LEFT_INVERTED
@ VS1053B_DIFF_NORMAL
@ VS1053B_BOOL_FALSE
@ VS1053B_BOOL_TRUE
@ VS1053B_SELECTOR_MICP
@ VS1053B_SELECTOR_LINE1
@ VS1053B_PATCH_OGG_VENC16K1Q07
@ VS1053B_PATCH_OGG_VENC16K2Q09
@ VS1053B_PATCH_OGG_VENC44K1Q03
@ VS1053B_PATCH_OGG_VENC16K1Q04
@ VS1053B_PATCH_OGG_VENC44K1Q05
@ VS1053B_PATCH_OGG_VENC16K2Q05
@ VS1053B_PATCH_OGG_VENC16K2Q07
@ VS1053B_PATCH_OGG_VENC16K1Q09
@ VS1053B_PATCH_OGG_VENC44K2Q04
@ VS1053B_PATCH_OGG_VENC16K1Q06
@ VS1053B_PATCH_OGG_VENC08K1Q10
@ VS1053B_PATCH_OGG_VENC08K1Q03
@ VS1053B_PATCH_OGG_VENC44K2Q01
@ VS1053B_PATCH_OGG_VENC16K1Q02
@ VS1053B_PATCH_OGG_VENC16K1Q05
@ VS1053B_PATCH_OGG_VENC44K2Q03
@ VS1053B_PATCH_OGG_VENC08K1Q05
@ VS1053B_PATCH_OGG_VENC16K2Q02
@ VS1053B_PATCH_OGG_VENC08K1Q01
@ VS1053B_PATCH_FLAC
@ VS1053B_PATCH_OGG_VENC16K1Q08
@ VS1053B_PATCH_OGG_VENC44K2Q02
@ VS1053B_PATCH_OGG_VENC16K2Q10
@ VS1053B_PATCH_OGG_VENC44K2Q05
@ VS1053B_PATCH_OGG_VENC08K1Q09
@ VS1053B_PATCH_OGG_VENC44K1Q04
@ VS1053B_PATCH_OGG_VENC16K2Q04
@ VS1053B_PATCH_OGG_VENC44K1Q02
@ VS1053B_PATCH_OGG_VENC44K1Q01
@ VS1053B_PATCH_OGG_VENC16K2Q08
@ VS1053B_PATCH_OGG_VENC08K1Q07
@ VS1053B_PATCH_OGG_VENC16K1Q00
@ VS1053B_PATCH_WAV
@ VS1053B_PATCH_OGG_VENC16K2Q00
@ VS1053B_PATCH_OGG_VENC08K1Q08
@ VS1053B_PATCH_OGG_VENC44K2Q00
@ VS1053B_PATCH_OGG_VENC16K1Q10
@ VS1053B_PATCH_OGG_VENC16K2Q01
@ VS1053B_PATCH_OGG_VENC08K1Q00
@ VS1053B_PATCH_OGG_VENC16K1Q01
@ VS1053B_PATCH_OGG_VENC44K1Q00
@ VS1053B_PATCH_OGG_VENC08K1Q02
@ VS1053B_PATCH_OGG_VENC08K1Q06
@ VS1053B_PATCH_OGG_VENC08K1Q04
@ VS1053B_PATCH_OGG_VENC16K1Q03
@ VS1053B_PATCH_OGG_VENC16K2Q06
@ VS1053B_PATCH_OGG_VENC16K2Q03
@ VS1053B_DCLK_EDGE_RISING
@ VS1053B_DCLK_EDGE_FALLING
@ VS1053B_CLOCK_RANGE_12MHZ_13MHZ
@ VS1053B_CLOCK_RANGE_24MHZ_26MHZ
@ VS1053B_APPLICATION_2
@ VS1053B_APPLICATION_0
@ VS1053B_APPLICATION_3
@ VS1053B_APPLICATION_1
@ VS1053B_RECORD_FORMAT_OGG
@ VS1053B_RECORD_FORMAT_WAV
@ VS1053B_PLAY_SPEED_2P0_X
@ VS1053B_PLAY_SPEED_1_X
@ VS1053B_PLAY_SPEED_1P0_X
@ VS1053B_PLAY_SPEED_3P0_X
@ VS1053B_IIS_RATE_192KHZ
@ VS1053B_IIS_RATE_96KHZ
@ VS1053B_IIS_RATE_48KHZ
@ VS1053B_CLOCK_MULTIPLIER_1P0_XTALI
@ VS1053B_CLOCK_MULTIPLIER_2P5_XTALI
@ VS1053B_CLOCK_MULTIPLIER_3P0_XTALI
@ VS1053B_CLOCK_MULTIPLIER_2P0_XTALI
@ VS1053B_CLOCK_MULTIPLIER_3P5_XTALI
@ VS1053B_CLOCK_MULTIPLIER_4P5_XTALI
@ VS1053B_CLOCK_MULTIPLIER_5P0_XTALI
@ VS1053B_CLOCK_MULTIPLIER_4P0_XTALI
@ VS1053B_CHANNEL_STEREO
@ VS1053B_CHANNEL_MONO
uint8_t vs1053b_set_data(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
set chip data
uint8_t vs1053b_get_reg(vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
uint8_t vs1053b_set_reg(vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
vs1053b audio info structure definition
vs1053b_format_t format
vs1053b handle structure definition
vs1053b_wav_t wav
uint8_t(* spi_dat_deinit)(void)
void(* timestamp_read)(uint32_t *sec, uint32_t *us)
uint8_t(* spi_cmd_write_address16)(uint16_t addr, uint8_t *buf, uint16_t len)
uint8_t(* dreq_gpio_init)(void)
uint8_t(* spi_dat_write_cmd)(uint8_t *buf, uint16_t len)
uint8_t(* spi_cmd_deinit)(void)
uint8_t buf[VS1053B_BUFFER_SIZE]
uint8_t(* spi_cmd_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_cmd_read_address16)(uint16_t addr, uint8_t *buf, uint16_t len)
void(* receive_callback)(uint8_t type, uint32_t cur_pos)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* audio_init)(uint8_t type, char *name, uint32_t *size)
uint8_t(* audio_read)(uint32_t addr, uint16_t size, uint8_t *buffer)
uint8_t(* reset_gpio_init)(void)
uint8_t(* spi_dat_init)(void)
uint8_t(* dreq_gpio_deinit)(void)
uint8_t(* dreq_gpio_read)(uint8_t *data)
uint8_t(* reset_gpio_write)(uint8_t data)
uint8_t(* audio_deinit)(void)
uint8_t(* audio_write)(uint32_t addr, uint16_t size, uint8_t *buffer)
vs1053b information structure definition
uint32_t driver_version
char manufacturer_name[32]
vs1053b wav structure definition
uint32_t sub_chunk1_size
uint32_t sample_rate
uint32_t sub_chunk2_size
char sub_chunk2_id[4]
uint16_t num_channel
char sub_chunk1_id[4]
uint16_t block_align
uint32_t chunk_size
uint16_t bit_per_sample
uint16_t audio_format