comparison src/ffmpeg/libavformat/aviobuf.c @ 828:c294c4700937 trunk

[svn] - more stuff to kill
author nenolod
date Mon, 12 Mar 2007 15:05:25 -0700
parents 420eb823b2d4
children 68562d99230f
comparison
equal deleted inserted replaced
827:81749781b75f 828:c294c4700937
170 } 170 }
171 } 171 }
172 return size1 - size; 172 return size1 - size;
173 } 173 }
174 174
175 int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size)
176 {
177 int len;
178
179 if(size<0)
180 return -1;
181
182 len = s->buf_end - s->buf_ptr;
183 if (len == 0) {
184 fill_buffer(s);
185 len = s->buf_end - s->buf_ptr;
186 }
187 if (len > size)
188 len = size;
189 memcpy(buf, s->buf_ptr, len);
190 s->buf_ptr += len;
191 return len;
192 }
193
175 unsigned int get_le16(ByteIOContext *s) 194 unsigned int get_le16(ByteIOContext *s)
176 { 195 {
177 unsigned int val; 196 unsigned int val;
178 val = get_byte(s); 197 val = get_byte(s);
179 val |= get_byte(s) << 8; 198 val |= get_byte(s) << 8;
199 return val;
200 }
201
202 unsigned int get_le24(ByteIOContext *s)
203 {
204 unsigned int val;
205 val = get_le16(s);
206 val |= get_byte(s) << 16;
180 return val; 207 return val;
181 } 208 }
182 209
183 unsigned int get_le32(ByteIOContext *s) 210 unsigned int get_le32(ByteIOContext *s)
184 { 211 {
200 227
201 unsigned int get_be16(ByteIOContext *s) 228 unsigned int get_be16(ByteIOContext *s)
202 { 229 {
203 unsigned int val; 230 unsigned int val;
204 val = get_byte(s) << 8; 231 val = get_byte(s) << 8;
232 val |= get_byte(s);
233 return val;
234 }
235
236 unsigned int get_be24(ByteIOContext *s)
237 {
238 unsigned int val;
239 val = get_be16(s) << 8;
205 val |= get_byte(s); 240 val |= get_byte(s);
206 return val; 241 return val;
207 } 242 }
208 243
209 unsigned int get_be32(ByteIOContext *s) 244 unsigned int get_be32(ByteIOContext *s)
404 size = s->seek(s->opaque, -1, SEEK_END) + 1; 439 size = s->seek(s->opaque, -1, SEEK_END) + 1;
405 s->seek(s->opaque, s->pos, SEEK_SET); 440 s->seek(s->opaque, s->pos, SEEK_SET);
406 return size; 441 return size;
407 } 442 }
408 443
444 static void flush_buffer(ByteIOContext *s)
445 {
446 if (s->buf_ptr > s->buffer) {
447 if (s->write_packet){
448 s->write_packet(s->opaque, s->buffer, s->buf_ptr - s->buffer);
449 }
450 s->pos += s->buf_ptr - s->buffer;
451 }
452 s->buf_ptr = s->buffer;
453 }
454
455 void put_byte(ByteIOContext *s, int b)
456 {
457 *(s->buf_ptr)++ = b;
458 if (s->buf_ptr >= s->buf_end)
459 flush_buffer(s);
460 }
461
462 void put_buffer(ByteIOContext *s, const unsigned char *buf, int size)
463 {
464 int len;
465
466 while (size > 0) {
467 len = (s->buf_end - s->buf_ptr);
468 if (len > size)
469 len = size;
470 memcpy(s->buf_ptr, buf, len);
471 s->buf_ptr += len;
472
473 if (s->buf_ptr >= s->buf_end)
474 flush_buffer(s);
475
476 buf += len;
477 size -= len;
478 }
479 }
480
481 void put_be32(ByteIOContext *s, unsigned int val)
482 {
483 put_byte(s, val >> 24);
484 put_byte(s, val >> 16);
485 put_byte(s, val >> 8);
486 put_byte(s, val);
487 }
488
489 void put_strz(ByteIOContext *s, const char *str)
490 {
491 if (str)
492 put_buffer(s, (const unsigned char *) str, strlen(str) + 1);
493 else
494 put_byte(s, 0);
495 }
496
497 void put_le64(ByteIOContext *s, uint64_t val)
498 {
499 put_le32(s, (uint32_t)(val & 0xffffffff));
500 put_le32(s, (uint32_t)(val >> 32));
501 }
502
503 void put_be64(ByteIOContext *s, uint64_t val)
504 {
505 put_be32(s, (uint32_t)(val >> 32));
506 put_be32(s, (uint32_t)(val & 0xffffffff));
507 }
508
509 void put_le16(ByteIOContext *s, unsigned int val)
510 {
511 put_byte(s, val);
512 put_byte(s, val >> 8);
513 }
514
515 void put_be16(ByteIOContext *s, unsigned int val)
516 {
517 put_byte(s, val >> 8);
518 put_byte(s, val);
519 }
520
521 void put_le24(ByteIOContext *s, unsigned int val)
522 {
523 put_le16(s, val & 0xffff);
524 put_byte(s, val >> 16);
525 }
526
527 void put_be24(ByteIOContext *s, unsigned int val)
528 {
529 put_be16(s, val >> 8);
530 put_byte(s, val);
531 }
532
533 void put_tag(ByteIOContext *s, const char *tag)
534 {
535 while (*tag) {
536 put_byte(s, *tag++);
537 }
538 }
539