Mercurial > libavcodec.hg
comparison mpegaudiodec.c @ 1414:5ee7bd7ee76d libavcodec
memmove fixes (Jon Burgess)
author | bellard |
---|---|
date | Sun, 24 Aug 2003 22:01:33 +0000 |
parents | 592fb56e562f |
children | aece5836c588 |
comparison
equal
deleted
inserted
replaced
1413:724e6477f2a8 | 1414:5ee7bd7ee76d |
---|---|
1458 static void seek_to_maindata(MPADecodeContext *s, unsigned int backstep) | 1458 static void seek_to_maindata(MPADecodeContext *s, unsigned int backstep) |
1459 { | 1459 { |
1460 uint8_t *ptr; | 1460 uint8_t *ptr; |
1461 | 1461 |
1462 /* compute current position in stream */ | 1462 /* compute current position in stream */ |
1463 ptr = s->gb.buffer + (get_bits_count(&s->gb)>>3); | 1463 ptr = (uint8_t *)(s->gb.buffer + (get_bits_count(&s->gb)>>3)); |
1464 | 1464 |
1465 /* copy old data before current one */ | 1465 /* copy old data before current one */ |
1466 ptr -= backstep; | 1466 ptr -= backstep; |
1467 memcpy(ptr, s->inbuf1[s->inbuf_index ^ 1] + | 1467 memcpy(ptr, s->inbuf1[s->inbuf_index ^ 1] + |
1468 BACKSTEP_SIZE + s->old_frame_size - backstep, backstep); | 1468 BACKSTEP_SIZE + s->old_frame_size - backstep, backstep); |
2374 header = (s->inbuf[0] << 24) | (s->inbuf[1] << 16) | | 2374 header = (s->inbuf[0] << 24) | (s->inbuf[1] << 16) | |
2375 (s->inbuf[2] << 8) | s->inbuf[3]; | 2375 (s->inbuf[2] << 8) | s->inbuf[3]; |
2376 | 2376 |
2377 if (check_header(header) < 0) { | 2377 if (check_header(header) < 0) { |
2378 /* no sync found : move by one byte (inefficient, but simple!) */ | 2378 /* no sync found : move by one byte (inefficient, but simple!) */ |
2379 memcpy(s->inbuf, s->inbuf + 1, s->inbuf_ptr - s->inbuf - 1); | 2379 memmove(s->inbuf, s->inbuf + 1, s->inbuf_ptr - s->inbuf - 1); |
2380 s->inbuf_ptr--; | 2380 s->inbuf_ptr--; |
2381 dprintf("skip %x\n", header); | 2381 dprintf("skip %x\n", header); |
2382 /* reset free format frame size to give a chance | 2382 /* reset free format frame size to give a chance |
2383 to get a new bitrate */ | 2383 to get a new bitrate */ |
2384 s->free_format_frame_size = 0; | 2384 s->free_format_frame_size = 0; |
2400 if (len > buf_size) | 2400 if (len > buf_size) |
2401 len = buf_size; | 2401 len = buf_size; |
2402 if (len == 0) { | 2402 if (len == 0) { |
2403 /* frame too long: resync */ | 2403 /* frame too long: resync */ |
2404 s->frame_size = 0; | 2404 s->frame_size = 0; |
2405 memcpy(s->inbuf, s->inbuf + 1, s->inbuf_ptr - s->inbuf - 1); | 2405 memmove(s->inbuf, s->inbuf + 1, s->inbuf_ptr - s->inbuf - 1); |
2406 s->inbuf_ptr--; | 2406 s->inbuf_ptr--; |
2407 } else { | 2407 } else { |
2408 uint8_t *p, *pend; | 2408 uint8_t *p, *pend; |
2409 uint32_t header1; | 2409 uint32_t header1; |
2410 int padding; | 2410 int padding; |