Changeset 904:51474cae0459 in roaraudio
- Timestamp:
- 11/28/08 22:23:14 (15 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r903 r904 1 v. 0.1beta4 - ??? 2 * added roar_buffer_shift_out() 3 1 4 v. 0.1beta3 - Thu Nov 27 2008 2 5 * fixed some includes, patch by janus -
include/libroar/buffer.h
r690 r904 53 53 }; 54 54 55 #define roar_buffer_next(a) roar_buffer_delete(*(a), (a)) ;55 #define roar_buffer_next(a) roar_buffer_delete(*(a), (a)) 56 56 57 57 int roar_buffer_new (struct roar_buffer ** buf, size_t len); … … 65 65 66 66 int roar_buffer_set_offset (struct roar_buffer * buf, size_t off); 67 68 int roar_buffer_shift_out (struct roar_buffer ** buf, void * data, size_t * len); 67 69 68 70 int roar_buffer_set_meta (struct roar_buffer * buf, void * meta); -
libroar/buffer.c
r690 r904 146 146 } 147 147 148 int roar_buffer_shift_out (struct roar_buffer ** buf, void * data, size_t * len) { 149 size_t todo, cl; 150 struct roar_buffer * cur; 151 void * cd; 152 153 if ( len == NULL || buf == NULL || data == NULL ) 154 return -1; 155 156 if ( *buf == NULL ) 157 return -1; 158 159 todo = *len; 160 cur = *buf; 161 162 *len = 0; 163 164 while (todo) { 165 ROAR_DBG("roar_buffer_shift_out(*): todo=%u, cur=%p", (unsigned int) todo, cur); 166 167 if ( roar_buffer_get_len(cur, &cl) == -1 ) 168 return -1; 169 170 if ( cl > todo ) { 171 if ( roar_buffer_get_data(cur, &cd) == -1 ) 172 return -1; 173 174 cl = todo; 175 176 memcpy(data, cd, cl); 177 todo -= cl; 178 data += cl; 179 *len += cl; 180 181 if ( roar_buffer_set_offset(cur, cl) == -1 ) 182 return -1; 183 } else { 184 if ( roar_buffer_get_data(cur, &cd) == -1 ) 185 return -1; 186 187 memcpy(data, cd, cl); 188 todo -= cl; 189 data += cl; 190 *len += cl; 191 192 if ( roar_buffer_next(&cur) == -1 ) 193 return -1; 194 } 195 196 /* 197 if ( cur == NULL ) 198 break; 199 */ 200 } 201 202 *buf = cur; 203 204 return -1; 205 } 206 148 207 int roar_buffer_set_meta (struct roar_buffer * buf, void * meta) { 149 208 if ( buf == NULL )
Note: See TracChangeset
for help on using the changeset viewer.