Mercurial > libavcodec.hg
comparison adpcm.c @ 1576:bc4b13ca74de libavcodec
block algn patch by ("Assaf Yaari" <assafy at mobixell dot com>)
author | michael |
---|---|
date | Sun, 26 Oct 2003 09:49:45 +0000 |
parents | c4e19184eff0 |
children | dbd0ede6623d |
comparison
equal
deleted
inserted
replaced
1575:f16ae8e69bd9 | 1576:bc4b13ca74de |
---|---|
522 return src - buf; | 522 return src - buf; |
523 } | 523 } |
524 } | 524 } |
525 break; | 525 break; |
526 case CODEC_ID_ADPCM_IMA_WAV: | 526 case CODEC_ID_ADPCM_IMA_WAV: |
527 if (buf_size > BLKSIZE) { | 527 if (avctx->block_align != 0 && buf_size > avctx->block_align) |
528 if (avctx->block_align != 0) | 528 buf_size = avctx->block_align; |
529 buf_size = avctx->block_align; | 529 |
530 else | |
531 buf_size = BLKSIZE; | |
532 } | |
533 // XXX: do as per-channel loop | 530 // XXX: do as per-channel loop |
534 cs = &(c->status[0]); | 531 cs = &(c->status[0]); |
535 cs->predictor = (*src++) & 0x0FF; | 532 cs->predictor = (*src++) & 0x0FF; |
536 cs->predictor |= ((*src++) << 8) & 0x0FF00; | 533 cs->predictor |= ((*src++) << 8) & 0x0FF00; |
537 if(cs->predictor & 0x8000) | 534 if(cs->predictor & 0x8000) |
603 | 600 |
604 src += m<<st; | 601 src += m<<st; |
605 | 602 |
606 break; | 603 break; |
607 case CODEC_ID_ADPCM_MS: | 604 case CODEC_ID_ADPCM_MS: |
608 | 605 if (avctx->block_align != 0 && buf_size > avctx->block_align) |
609 if (buf_size > BLKSIZE) { | 606 buf_size = avctx->block_align; |
610 if (avctx->block_align != 0) | |
611 buf_size = avctx->block_align; | |
612 else | |
613 buf_size = BLKSIZE; | |
614 } | |
615 n = buf_size - 7 * avctx->channels; | 607 n = buf_size - 7 * avctx->channels; |
616 if (n < 0) | 608 if (n < 0) |
617 return -1; | 609 return -1; |
618 block_predictor[0] = (*src++); /* should be bound */ | 610 block_predictor[0] = (*src++); /* should be bound */ |
619 block_predictor[0] = (block_predictor[0] < 0)?(0):((block_predictor[0] > 7)?(7):(block_predictor[0])); | 611 block_predictor[0] = (block_predictor[0] < 0)?(0):((block_predictor[0] > 7)?(7):(block_predictor[0])); |