Changeset 904:51474cae0459 in roaraudio for libroar
- Timestamp:
- 11/28/08 22:23:14 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.