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]));