Changeset 4795:cf3e4ecde1f5 in roaraudio
- Timestamp:
- 03/14/11 15:47:34 (13 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r4794 r4795 15 15 * Moved error string lookup from VS into error.c (pr1) 16 16 * Added Meta Data types COMPOSER, RIGHTS, ISRC, LANGUAGE, GTIN, PUBLISHER (pr1) 17 * Added Adler32 support (Closes: #123) (pr1) 17 18 18 19 v. 0.4beta3 - Wed Jan 26 2011 23:26 CET -
doc/new-cmds
r4728 r4795 219 219 +HT_ISBN10 = 72003 220 220 +HT_ISBN13 = HT_GTIN13 #(ISBN-13 and GTIN/EAN-13 are the same) 221 +HT_ADLER32 = 73001 #(RFC1950) 221 222 +HF_NONE = 0 #(This entry does not have anything to do with the object...) 222 223 +HF_OBJECT = 1 #(This is an entry for exacltly this object) -
include/libroar/crc.h
r4708 r4795 42 42 #define roar_crc24_init() roar_crc24_add(0, NULL, 0) 43 43 44 uint32_t roar_adler32_add(uint32_t state, const void * data, size_t len); 45 #define roar_adler32_init() roar_adler32_add(0, NULL, 0) 46 44 47 int roar_hash_crc24_init(void * state); 45 48 int roar_hash_crc24_digest(void * state, void * digest, size_t * len); 46 49 int roar_hash_crc24_proc(void * state, const void * data, size_t len); 47 50 51 int roar_hash_adler32_init(void * state); 52 int roar_hash_adler32_digest(void * state, void * digest, size_t * len); 53 int roar_hash_adler32_proc(void * state, const void * data, size_t len); 54 48 55 #endif 49 56 -
include/libroar/hash.h
r4708 r4795 75 75 #define ROAR_HT_ISBN10 72003 76 76 #define ROAR_HT_ISBN13 ROAR_HT_GTIN13 77 #define ROAR_HT_ADLER32 73001 77 78 78 79 struct roar_hash_cmds { -
libroar/crc.c
r4708 r4795 39 39 #define CRC24_INIT 0x00B704CEL 40 40 41 #define ADLER32_BASE 65521L 42 #define ADLER32_INIT 1L 43 41 44 uint32_t roar_crc24_add(uint32_t state, const void * data, size_t len) { 42 45 const unsigned char * p = data; … … 57 60 return state & 0x00FFFFFFL; 58 61 } 62 63 uint32_t roar_adler32_add(uint32_t state, const void * data, size_t len) { 64 const unsigned char * p = data; 65 uint32_t s1 = state & 0xFFFFL; 66 uint32_t s2 = (state >> 16) & 0xFFFFL; 67 size_t n; 68 69 if ( data == NULL ) 70 return ADLER32_INIT; 71 72 for (n = 0; n < len; n++) { 73 s1 = (s1 + p[n]) % ADLER32_BASE; 74 s2 = (s2 + s1 ) % ADLER32_BASE; 75 } 76 77 return (s2 << 16) + s1; 78 } 79 59 80 60 81 int roar_hash_crc24_init(void * state) { … … 93 114 } 94 115 116 117 int roar_hash_adler32_init(void * state) { 118 uint32_t * self = state; 119 120 *self = roar_adler32_init(); 121 122 return 0; 123 } 124 125 int roar_hash_adler32_digest(void * state, void * digest, size_t * len) { 126 uint32_t * self = state; 127 unsigned char * out = digest; 128 register uint32_t crc; 129 130 if ( *len < 4 ) 131 return -1; 132 133 *len = 4; 134 135 crc = *self; 136 137 out[0] = ((crc & 0xFF000000) >> 24) & 0xFF; 138 out[1] = ((crc & 0x00FF0000) >> 16) & 0xFF; 139 out[2] = ((crc & 0x0000FF00) >> 8) & 0xFF; 140 out[3] = ((crc & 0x000000FF) >> 0) & 0xFF; 141 142 return 0; 143 } 144 145 int roar_hash_adler32_proc(void * state, const void * data, size_t len) { 146 uint32_t * self = state; 147 148 *self = roar_adler32_add(*self, data, len); 149 150 return 0; 151 } 152 95 153 //ll -
libroar/hash.c
r4708 r4795 46 46 47 47 static const struct hashes { 48 const intid;49 const char *name;50 const ssize_t dlen;48 const uint_least32_t id; 49 const char * name; 50 const ssize_t dlen; 51 51 } _libroar_hashes[] = { 52 52 /* … … 88 88 {ROAR_HT_ISBN10, "ISBN10", 8 }, 89 89 {ROAR_HT_ISBN13, "ISBN13", 8 }, 90 {ROAR_HT_ADLER32, "ADLER32", 4 }, 90 91 {-1, NULL} 91 92 }; … … 102 103 roar_hash_crc24_digest, NULL, roar_hash_crc24_proc 103 104 }, 105 {ROAR_HT_ADLER32, sizeof(uint32_t), -1, 106 roar_hash_adler32_init, NULL, 107 roar_hash_adler32_digest, NULL, roar_hash_adler32_proc 108 }, 104 109 {-1, -1, -1, NULL, NULL, NULL, NULL, NULL} 105 110 };
Note: See TracChangeset
for help on using the changeset viewer.