The "GR-PEACH_Audio_Playback_7InchLCD_Sample" is a sample code that can provides high-resolution audio playback of FLAC format files. It also allows the user to audio-playback control functions such as play, pause, and stop by manipulating key switches.
Dependencies: GR-PEACH_video R_BSP TLV320_RBSP USBHost_custom
Fork of GR-PEACH_Audio_Playback_Sample by
crc.c
00001 /* libFLAC - Free Lossless Audio Codec library 00002 * Copyright (C) 2000-2009 Josh Coalson 00003 * Copyright (C) 2011-2014 Xiph.Org Foundation 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 00009 * - Redistributions of source code must retain the above copyright 00010 * notice, this list of conditions and the following disclaimer. 00011 * 00012 * - Redistributions in binary form must reproduce the above copyright 00013 * notice, this list of conditions and the following disclaimer in the 00014 * documentation and/or other materials provided with the distribution. 00015 * 00016 * - Neither the name of the Xiph.org Foundation nor the names of its 00017 * contributors may be used to endorse or promote products derived from 00018 * this software without specific prior written permission. 00019 * 00020 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00021 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00022 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00023 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 00024 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00026 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00027 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00028 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00029 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00030 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00031 */ 00032 00033 #ifdef HAVE_CONFIG_H 00034 # include <config.h> 00035 #endif 00036 00037 #include "private/crc.h" 00038 00039 /* CRC-8, poly = x^8 + x^2 + x^1 + x^0, init = 0 */ 00040 00041 FLAC__byte const FLAC__crc8_table[256] = { 00042 0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 00043 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D, 00044 0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 00045 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D, 00046 0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 00047 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD, 00048 0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 00049 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD, 00050 0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 00051 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA, 00052 0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 00053 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A, 00054 0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 00055 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A, 00056 0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 00057 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A, 00058 0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 00059 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4, 00060 0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 00061 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4, 00062 0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 00063 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44, 00064 0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 00065 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34, 00066 0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 00067 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63, 00068 0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 00069 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13, 00070 0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 00071 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83, 00072 0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 00073 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3 00074 }; 00075 00076 /* CRC-16, poly = x^16 + x^15 + x^2 + x^0, init = 0 */ 00077 00078 unsigned const FLAC__crc16_table[256] = { 00079 0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011, 00080 0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022, 00081 0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072, 00082 0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041, 00083 0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2, 00084 0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1, 00085 0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1, 00086 0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082, 00087 0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192, 00088 0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1, 00089 0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1, 00090 0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2, 00091 0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151, 00092 0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162, 00093 0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132, 00094 0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101, 00095 0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312, 00096 0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321, 00097 0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371, 00098 0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342, 00099 0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1, 00100 0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2, 00101 0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2, 00102 0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381, 00103 0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291, 00104 0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2, 00105 0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2, 00106 0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1, 00107 0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252, 00108 0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261, 00109 0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231, 00110 0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202 00111 }; 00112 00113 00114 void FLAC__crc8_update(const FLAC__byte data, FLAC__uint8 *crc) 00115 { 00116 *crc = FLAC__crc8_table[*crc ^ data]; 00117 } 00118 00119 void FLAC__crc8_update_block(const FLAC__byte *data, unsigned len, FLAC__uint8 *crc) 00120 { 00121 while(len--) 00122 *crc = FLAC__crc8_table[*crc ^ *data++]; 00123 } 00124 00125 FLAC__uint8 FLAC__crc8(const FLAC__byte *data, unsigned len) 00126 { 00127 FLAC__uint8 crc = 0; 00128 00129 while(len--) 00130 crc = FLAC__crc8_table[crc ^ *data++]; 00131 00132 return crc; 00133 } 00134 00135 unsigned FLAC__crc16(const FLAC__byte *data, unsigned len) 00136 { 00137 unsigned crc = 0; 00138 00139 while(len--) 00140 crc = ((crc<<8) ^ FLAC__crc16_table[(crc>>8) ^ *data++]) & 0xffff; 00141 00142 return crc; 00143 }
Generated on Tue Jul 12 2022 19:32:28 by 1.7.2