]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained/libboard_samv7-ek/source/wav.c
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained / libboard_samv7-ek / source / wav.c
1 /* ----------------------------------------------------------------------------\r
2  *         SAM Software Package License \r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2011, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\r
8  * Redistribution and use in source and binary forms, with or without\r
9  * modification, are permitted provided that the following conditions are met:\r
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\r
14  * Atmel's name may not be used to endorse or promote products derived from\r
15  * this software without specific prior written permission.\r
16  *\r
17  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
23  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
24  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  * ----------------------------------------------------------------------------\r
28  */\r
29  \r
30 /** \file */\r
31 \r
32 /*----------------------------------------------------------------------------\r
33  *        Headers\r
34  *----------------------------------------------------------------------------*/\r
35 \r
36 #include "board.h"\r
37 \r
38 #include <stdio.h>\r
39 \r
40 /*----------------------------------------------------------------------------\r
41  *        Definiation\r
42  *----------------------------------------------------------------------------*/\r
43 \r
44 /* WAV letters "RIFF" */\r
45 #define WAV_CHUNKID       0x46464952\r
46 /* WAV letters "WAVE"*/\r
47 #define WAV_FORMAT        0x45564157\r
48 /* WAV letters "fmt "*/\r
49 #define WAV_SUBCHUNKID    0x20746D66\r
50 \r
51 /*----------------------------------------------------------------------------\r
52  *        Exported functions\r
53  *----------------------------------------------------------------------------*/\r
54 \r
55 /**\r
56  * \brief Check if the header of a Wav file is valid ot not.\r
57  *\r
58  * \param file  Buffer holding the file to examinate.\r
59  * \return 1 if the header of a Wav file is valid; otherwise returns 0.\r
60  */\r
61 unsigned char WAV_IsValid(const WavHeader *header)\r
62 {\r
63     return ((header->chunkID == WAV_CHUNKID)\r
64             && (header->format == WAV_FORMAT)\r
65             && (header->subchunk1Size == 0x10));\r
66 }\r
67 \r
68 /**\r
69  * \brief Display the information of the WAV file (sample rate, stereo/mono\r
70  * and frame size).\r
71  *\r
72  * \param header  Wav head information.\r
73  */\r
74 \r
75 void WAV_DisplayInfo(const WavHeader *header)\r
76 {\r
77     printf( "Wave file header information\n\r");\r
78     printf( "--------------------------------\n\r");\r
79     printf( "  - Chunk ID        = 0x%08X\n\r", header->chunkID);\r
80     printf( "  - Chunk Size      = %u\n\r",     header->chunkSize);\r
81     printf( "  - Format          = 0x%08X\n\r", header->format);\r
82     printf( "  - SubChunk ID     = 0x%08X\n\r", header->subchunk1ID);\r
83     printf( "  - Subchunk1 Size  = %u\n\r",     header->subchunk1Size);\r
84     printf( "  - Audio Format    = 0x%04X\n\r", header->audioFormat);\r
85     printf( "  - Num. Channels   = %d\n\r",     header->numChannels);\r
86     printf( "  - Sample Rate     = %u\n\r",     header->sampleRate);\r
87     printf( "  - Byte Rate       = %u\n\r",     header->byteRate);\r
88     printf( "  - Block Align     = %d\n\r",     header->blockAlign);\r
89     printf( "  - Bits Per Sample = %d\n\r",     header->bitsPerSample);\r
90     printf( "  - Subchunk2 ID    = 0x%08X\n\r", header->subchunk2ID);\r
91     printf( "  - Subchunk2 Size  = %u\n\r",     header->subchunk2Size);\r
92 }\r
93 \r