385
471
/* simple 4-bit adpcm, with header */
387
473
switch (avctx->codec->id) {
388
case CODEC_ID_ADPCM_4XM:
389
case CODEC_ID_ADPCM_IMA_ISS: header_size = 4 * ch; break;
390
case CODEC_ID_ADPCM_IMA_AMV: header_size = 8; break;
391
case CODEC_ID_ADPCM_IMA_SMJPEG: header_size = 4; break;
474
case AV_CODEC_ID_ADPCM_4XM:
475
case AV_CODEC_ID_ADPCM_IMA_ISS: header_size = 4 * ch; break;
476
case AV_CODEC_ID_ADPCM_IMA_AMV: header_size = 8; break;
477
case AV_CODEC_ID_ADPCM_IMA_SMJPEG: header_size = 4; break;
393
479
if (header_size > 0)
394
480
return (buf_size - header_size) * 2 / ch;
396
482
/* more complex formats */
397
483
switch (avctx->codec->id) {
398
case CODEC_ID_ADPCM_EA:
484
case AV_CODEC_ID_ADPCM_EA:
399
485
has_coded_samples = 1;
402
*coded_samples = AV_RL32(buf);
486
*coded_samples = bytestream2_get_le32(gb);
403
487
*coded_samples -= *coded_samples % 28;
404
488
nb_samples = (buf_size - 12) / 30 * 28;
406
case CODEC_ID_ADPCM_IMA_EA_EACS:
490
case AV_CODEC_ID_ADPCM_IMA_EA_EACS:
407
491
has_coded_samples = 1;
410
*coded_samples = AV_RL32(buf);
492
*coded_samples = bytestream2_get_le32(gb);
411
493
nb_samples = (buf_size - (4 + 8 * ch)) * 2 / ch;
413
case CODEC_ID_ADPCM_EA_MAXIS_XA:
414
nb_samples = ((buf_size - ch) / (2 * ch)) * 2 * ch;
495
case AV_CODEC_ID_ADPCM_EA_MAXIS_XA:
496
nb_samples = (buf_size - ch) / ch * 2;
416
case CODEC_ID_ADPCM_EA_R1:
417
case CODEC_ID_ADPCM_EA_R2:
418
case CODEC_ID_ADPCM_EA_R3:
498
case AV_CODEC_ID_ADPCM_EA_R1:
499
case AV_CODEC_ID_ADPCM_EA_R2:
500
case AV_CODEC_ID_ADPCM_EA_R3:
419
501
/* maximum number of samples */
420
502
/* has internal offsets and a per-frame switch to signal raw 16-bit */
421
503
has_coded_samples = 1;
424
504
switch (avctx->codec->id) {
425
case CODEC_ID_ADPCM_EA_R1:
505
case AV_CODEC_ID_ADPCM_EA_R1:
426
506
header_size = 4 + 9 * ch;
427
*coded_samples = AV_RL32(buf);
429
case CODEC_ID_ADPCM_EA_R2:
430
header_size = 4 + 5 * ch;
431
*coded_samples = AV_RL32(buf);
433
case CODEC_ID_ADPCM_EA_R3:
434
header_size = 4 + 5 * ch;
435
*coded_samples = AV_RB32(buf);
507
*coded_samples = bytestream2_get_le32(gb);
509
case AV_CODEC_ID_ADPCM_EA_R2:
510
header_size = 4 + 5 * ch;
511
*coded_samples = bytestream2_get_le32(gb);
513
case AV_CODEC_ID_ADPCM_EA_R3:
514
header_size = 4 + 5 * ch;
515
*coded_samples = bytestream2_get_be32(gb);
438
518
*coded_samples -= *coded_samples % 28;
439
519
nb_samples = (buf_size - header_size) * 2 / ch;
440
520
nb_samples -= nb_samples % 28;
442
case CODEC_ID_ADPCM_IMA_DK3:
522
case AV_CODEC_ID_ADPCM_IMA_DK3:
443
523
if (avctx->block_align > 0)
444
524
buf_size = FFMIN(buf_size, avctx->block_align);
445
nb_samples = ((buf_size - 16) * 8 / 3) / ch;
525
nb_samples = ((buf_size - 16) * 2 / 3 * 4) / ch;
447
case CODEC_ID_ADPCM_IMA_DK4:
527
case AV_CODEC_ID_ADPCM_IMA_DK4:
528
if (avctx->block_align > 0)
529
buf_size = FFMIN(buf_size, avctx->block_align);
448
530
nb_samples = 1 + (buf_size - 4 * ch) * 2 / ch;
450
case CODEC_ID_ADPCM_IMA_WAV:
532
case AV_CODEC_ID_ADPCM_IMA_WAV:
451
533
if (avctx->block_align > 0)
452
534
buf_size = FFMIN(buf_size, avctx->block_align);
453
535
nb_samples = 1 + (buf_size - 4 * ch) / (4 * ch) * 8;
455
case CODEC_ID_ADPCM_MS:
537
case AV_CODEC_ID_ADPCM_MS:
456
538
if (avctx->block_align > 0)
457
539
buf_size = FFMIN(buf_size, avctx->block_align);
458
540
nb_samples = 2 + (buf_size - 7 * ch) * 2 / ch;
460
case CODEC_ID_ADPCM_SBPRO_2:
461
case CODEC_ID_ADPCM_SBPRO_3:
462
case CODEC_ID_ADPCM_SBPRO_4:
542
case AV_CODEC_ID_ADPCM_SBPRO_2:
543
case AV_CODEC_ID_ADPCM_SBPRO_3:
544
case AV_CODEC_ID_ADPCM_SBPRO_4:
464
546
int samples_per_byte;
465
547
switch (avctx->codec->id) {
466
case CODEC_ID_ADPCM_SBPRO_2: samples_per_byte = 4; break;
467
case CODEC_ID_ADPCM_SBPRO_3: samples_per_byte = 3; break;
468
case CODEC_ID_ADPCM_SBPRO_4: samples_per_byte = 2; break;
548
case AV_CODEC_ID_ADPCM_SBPRO_2: samples_per_byte = 4; break;
549
case AV_CODEC_ID_ADPCM_SBPRO_3: samples_per_byte = 3; break;
550
case AV_CODEC_ID_ADPCM_SBPRO_4: samples_per_byte = 2; break;
470
552
if (!s->status[0].step_index) {
594
656
cs->predictor = predictor;
597
if (cs->step_index > 88){
598
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index = %i\n", cs->step_index);
659
if (cs->step_index > 88u){
660
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n",
661
channel, cs->step_index);
662
return AVERROR_INVALIDDATA;
602
samples = (short *)c->frame.data[0] + channel;
665
samples = samples_p[channel];
604
for (m = 0; m < 32; m++) {
605
*samples = adpcm_ima_qt_expand_nibble(cs, src[0] & 0x0F, 3);
606
samples += avctx->channels;
607
*samples = adpcm_ima_qt_expand_nibble(cs, src[0] >> 4 , 3);
608
samples += avctx->channels;
667
for (m = 0; m < 64; m += 2) {
668
int byte = bytestream2_get_byteu(&gb);
669
samples[m ] = adpcm_ima_qt_expand_nibble(cs, byte & 0x0F, 3);
670
samples[m + 1] = adpcm_ima_qt_expand_nibble(cs, byte >> 4 , 3);
613
case CODEC_ID_ADPCM_IMA_WAV:
614
if (avctx->block_align != 0 && buf_size > avctx->block_align)
615
buf_size = avctx->block_align;
674
case AV_CODEC_ID_ADPCM_IMA_WAV:
617
675
for(i=0; i<avctx->channels; i++){
618
676
cs = &(c->status[i]);
619
cs->predictor = *samples++ = (int16_t)bytestream_get_le16(&src);
677
cs->predictor = samples_p[i][0] = sign_extend(bytestream2_get_le16u(&gb), 16);
621
cs->step_index = *src++;
622
if (cs->step_index > 88){
623
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index = %i\n", cs->step_index);
679
cs->step_index = sign_extend(bytestream2_get_le16u(&gb), 16);
680
if (cs->step_index > 88u){
681
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n",
683
return AVERROR_INVALIDDATA;
626
if (*src++) av_log(avctx, AV_LOG_ERROR, "unused byte should be null but is %d!!\n", src[-1]); /* unused */
629
for (n = (nb_samples - 1) / 8; n > 0; n--) {
687
for (n = 0; n < (nb_samples - 1) / 8; n++) {
630
688
for (i = 0; i < avctx->channels; i++) {
631
689
cs = &c->status[i];
632
for (m = 0; m < 4; m++) {
634
*samples = adpcm_ima_expand_nibble(cs, v & 0x0F, 3);
635
samples += avctx->channels;
636
*samples = adpcm_ima_expand_nibble(cs, v >> 4 , 3);
637
samples += avctx->channels;
690
samples = &samples_p[i][1 + n * 8];
691
for (m = 0; m < 8; m += 2) {
692
int v = bytestream2_get_byteu(&gb);
693
samples[m ] = adpcm_ima_expand_nibble(cs, v & 0x0F, 3);
694
samples[m + 1] = adpcm_ima_expand_nibble(cs, v >> 4 , 3);
639
samples -= 8 * avctx->channels - 1;
641
samples += 7 * avctx->channels;
644
case CODEC_ID_ADPCM_4XM:
699
case AV_CODEC_ID_ADPCM_4XM:
645
700
for (i = 0; i < avctx->channels; i++)
646
c->status[i].predictor= (int16_t)bytestream_get_le16(&src);
701
c->status[i].predictor = sign_extend(bytestream2_get_le16u(&gb), 16);
648
703
for (i = 0; i < avctx->channels; i++) {
649
c->status[i].step_index= (int16_t)bytestream_get_le16(&src);
650
c->status[i].step_index = av_clip(c->status[i].step_index, 0, 88);
704
c->status[i].step_index = sign_extend(bytestream2_get_le16u(&gb), 16);
705
if (c->status[i].step_index > 88u) {
706
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n",
707
i, c->status[i].step_index);
708
return AVERROR_INVALIDDATA;
653
712
for (i = 0; i < avctx->channels; i++) {
654
samples = (short *)c->frame.data[0] + i;
713
samples = (int16_t *)c->frame.data[i];
655
714
cs = &c->status[i];
656
for (n = nb_samples >> 1; n > 0; n--, src++) {
658
*samples = adpcm_ima_expand_nibble(cs, v & 0x0F, 4);
659
samples += avctx->channels;
660
*samples = adpcm_ima_expand_nibble(cs, v >> 4 , 4);
661
samples += avctx->channels;
715
for (n = nb_samples >> 1; n > 0; n--) {
716
int v = bytestream2_get_byteu(&gb);
717
*samples++ = adpcm_ima_expand_nibble(cs, v & 0x0F, 4);
718
*samples++ = adpcm_ima_expand_nibble(cs, v >> 4 , 4);
665
case CODEC_ID_ADPCM_MS:
722
case AV_CODEC_ID_ADPCM_MS:
667
724
int block_predictor;
669
if (avctx->block_align != 0 && buf_size > avctx->block_align)
670
buf_size = avctx->block_align;
672
block_predictor = av_clip(*src++, 0, 6);
726
block_predictor = bytestream2_get_byteu(&gb);
727
if (block_predictor > 6) {
728
av_log(avctx, AV_LOG_ERROR, "ERROR: block_predictor[0] = %d\n",
730
return AVERROR_INVALIDDATA;
673
732
c->status[0].coeff1 = ff_adpcm_AdaptCoeff1[block_predictor];
674
733
c->status[0].coeff2 = ff_adpcm_AdaptCoeff2[block_predictor];
676
block_predictor = av_clip(*src++, 0, 6);
735
block_predictor = bytestream2_get_byteu(&gb);
736
if (block_predictor > 6) {
737
av_log(avctx, AV_LOG_ERROR, "ERROR: block_predictor[1] = %d\n",
739
return AVERROR_INVALIDDATA;
677
741
c->status[1].coeff1 = ff_adpcm_AdaptCoeff1[block_predictor];
678
742
c->status[1].coeff2 = ff_adpcm_AdaptCoeff2[block_predictor];
680
c->status[0].idelta = (int16_t)bytestream_get_le16(&src);
744
c->status[0].idelta = sign_extend(bytestream2_get_le16u(&gb), 16);
682
c->status[1].idelta = (int16_t)bytestream_get_le16(&src);
746
c->status[1].idelta = sign_extend(bytestream2_get_le16u(&gb), 16);
685
c->status[0].sample1 = bytestream_get_le16(&src);
686
if (st) c->status[1].sample1 = bytestream_get_le16(&src);
687
c->status[0].sample2 = bytestream_get_le16(&src);
688
if (st) c->status[1].sample2 = bytestream_get_le16(&src);
749
c->status[0].sample1 = sign_extend(bytestream2_get_le16u(&gb), 16);
750
if (st) c->status[1].sample1 = sign_extend(bytestream2_get_le16u(&gb), 16);
751
c->status[0].sample2 = sign_extend(bytestream2_get_le16u(&gb), 16);
752
if (st) c->status[1].sample2 = sign_extend(bytestream2_get_le16u(&gb), 16);
690
754
*samples++ = c->status[0].sample2;
691
755
if (st) *samples++ = c->status[1].sample2;
692
756
*samples++ = c->status[0].sample1;
693
757
if (st) *samples++ = c->status[1].sample1;
694
for(n = (nb_samples - 2) >> (1 - st); n > 0; n--, src++) {
695
*samples++ = adpcm_ms_expand_nibble(&c->status[0 ], src[0] >> 4 );
696
*samples++ = adpcm_ms_expand_nibble(&c->status[st], src[0] & 0x0F);
758
for(n = (nb_samples - 2) >> (1 - st); n > 0; n--) {
759
int byte = bytestream2_get_byteu(&gb);
760
*samples++ = adpcm_ms_expand_nibble(&c->status[0 ], byte >> 4 );
761
*samples++ = adpcm_ms_expand_nibble(&c->status[st], byte & 0x0F);
700
case CODEC_ID_ADPCM_IMA_DK4:
701
if (avctx->block_align != 0 && buf_size > avctx->block_align)
702
buf_size = avctx->block_align;
765
case AV_CODEC_ID_ADPCM_IMA_DK4:
704
766
for (channel = 0; channel < avctx->channels; channel++) {
705
767
cs = &c->status[channel];
706
cs->predictor = (int16_t)bytestream_get_le16(&src);
707
cs->step_index = av_clip(*src++, 0, 88);
709
*samples++ = cs->predictor;
768
cs->predictor = *samples++ = sign_extend(bytestream2_get_le16u(&gb), 16);
769
cs->step_index = sign_extend(bytestream2_get_le16u(&gb), 16);
770
if (cs->step_index > 88u){
771
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n",
772
channel, cs->step_index);
773
return AVERROR_INVALIDDATA;
711
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
776
for (n = (nb_samples >> (1 - st)) - 1; n > 0; n--) {
777
int v = bytestream2_get_byteu(&gb);
713
778
*samples++ = adpcm_ima_expand_nibble(&c->status[0 ], v >> 4 , 3);
714
779
*samples++ = adpcm_ima_expand_nibble(&c->status[st], v & 0x0F, 3);
717
case CODEC_ID_ADPCM_IMA_DK3:
782
case AV_CODEC_ID_ADPCM_IMA_DK3:
719
unsigned char last_byte = 0;
720
unsigned char nibble;
721
786
int decode_top_nibble_next = 0;
722
int end_of_packet = 0;
723
787
int diff_channel;
725
if (avctx->block_align != 0 && buf_size > avctx->block_align)
726
buf_size = avctx->block_align;
728
c->status[0].predictor = (int16_t)AV_RL16(src + 10);
729
c->status[1].predictor = (int16_t)AV_RL16(src + 12);
730
c->status[0].step_index = av_clip(src[14], 0, 88);
731
c->status[1].step_index = av_clip(src[15], 0, 88);
788
const int16_t *samples_end = samples + avctx->channels * nb_samples;
790
bytestream2_skipu(&gb, 10);
791
c->status[0].predictor = sign_extend(bytestream2_get_le16u(&gb), 16);
792
c->status[1].predictor = sign_extend(bytestream2_get_le16u(&gb), 16);
793
c->status[0].step_index = bytestream2_get_byteu(&gb);
794
c->status[1].step_index = bytestream2_get_byteu(&gb);
795
if (c->status[0].step_index > 88u || c->status[1].step_index > 88u){
796
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index = %i/%i\n",
797
c->status[0].step_index, c->status[1].step_index);
798
return AVERROR_INVALIDDATA;
732
800
/* sign extend the predictors */
734
801
diff_channel = c->status[1].predictor;
736
/* the DK3_GET_NEXT_NIBBLE macro issues the break statement when
737
* the buffer is consumed */
803
/* DK3 ADPCM support macro */
804
#define DK3_GET_NEXT_NIBBLE() \
805
if (decode_top_nibble_next) { \
806
nibble = last_byte >> 4; \
807
decode_top_nibble_next = 0; \
809
last_byte = bytestream2_get_byteu(&gb); \
810
nibble = last_byte & 0x0F; \
811
decode_top_nibble_next = 1; \
814
while (samples < samples_end) {
740
816
/* for this algorithm, c->status[0] is the sum channel and
741
817
* c->status[1] is the diff channel */
787
867
*samples++ = adpcm_ima_expand_nibble(&c->status[st], v2, 3);
790
case CODEC_ID_ADPCM_IMA_WS:
791
while (src < buf + buf_size) {
870
case AV_CODEC_ID_ADPCM_IMA_APC:
871
while (bytestream2_get_bytes_left(&gb) > 0) {
872
int v = bytestream2_get_byteu(&gb);
793
873
*samples++ = adpcm_ima_expand_nibble(&c->status[0], v >> 4 , 3);
794
874
*samples++ = adpcm_ima_expand_nibble(&c->status[st], v & 0x0F, 3);
797
case CODEC_ID_ADPCM_XA:
798
while (buf_size >= 128) {
799
if ((ret = xa_decode(avctx, samples, src, &c->status[0],
800
&c->status[1], avctx->channels)) < 0)
877
case AV_CODEC_ID_ADPCM_IMA_WS:
878
if (c->vqa_version == 3) {
879
for (channel = 0; channel < avctx->channels; channel++) {
880
int16_t *smp = samples_p[channel];
882
for (n = nb_samples / 2; n > 0; n--) {
883
int v = bytestream2_get_byteu(&gb);
884
*smp++ = adpcm_ima_expand_nibble(&c->status[channel], v >> 4 , 3);
885
*smp++ = adpcm_ima_expand_nibble(&c->status[channel], v & 0x0F, 3);
889
for (n = nb_samples / 2; n > 0; n--) {
890
for (channel = 0; channel < avctx->channels; channel++) {
891
int v = bytestream2_get_byteu(&gb);
892
*samples++ = adpcm_ima_expand_nibble(&c->status[channel], v >> 4 , 3);
893
samples[st] = adpcm_ima_expand_nibble(&c->status[channel], v & 0x0F, 3);
895
samples += avctx->channels;
898
bytestream2_seek(&gb, 0, SEEK_END);
900
case AV_CODEC_ID_ADPCM_XA:
902
int16_t *out0 = samples_p[0];
903
int16_t *out1 = samples_p[1];
904
int samples_per_block = 28 * (3 - avctx->channels) * 4;
905
int sample_offset = 0;
906
while (bytestream2_get_bytes_left(&gb) >= 128) {
907
if ((ret = xa_decode(avctx, out0, out1, buf + bytestream2_tell(&gb),
908
&c->status[0], &c->status[1],
909
avctx->channels, sample_offset)) < 0)
807
case CODEC_ID_ADPCM_IMA_EA_EACS:
808
src += 4; // skip sample count (already read)
810
for (i=0; i<=st; i++)
811
c->status[i].step_index = av_clip(bytestream_get_le32(&src), 0, 88);
812
for (i=0; i<=st; i++)
813
c->status[i].predictor = bytestream_get_le32(&src);
815
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
816
*samples++ = adpcm_ima_expand_nibble(&c->status[0], *src>>4, 3);
817
*samples++ = adpcm_ima_expand_nibble(&c->status[st], *src&0x0F, 3);
820
case CODEC_ID_ADPCM_IMA_EA_SEAD:
821
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
822
*samples++ = adpcm_ima_expand_nibble(&c->status[0], src[0] >> 4, 6);
823
*samples++ = adpcm_ima_expand_nibble(&c->status[st],src[0]&0x0F, 6);
826
case CODEC_ID_ADPCM_EA:
911
bytestream2_skipu(&gb, 128);
912
sample_offset += samples_per_block;
916
case AV_CODEC_ID_ADPCM_IMA_EA_EACS:
917
for (i=0; i<=st; i++) {
918
c->status[i].step_index = bytestream2_get_le32u(&gb);
919
if (c->status[i].step_index > 88u) {
920
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n",
921
i, c->status[i].step_index);
922
return AVERROR_INVALIDDATA;
925
for (i=0; i<=st; i++)
926
c->status[i].predictor = bytestream2_get_le32u(&gb);
928
for (n = nb_samples >> (1 - st); n > 0; n--) {
929
int byte = bytestream2_get_byteu(&gb);
930
*samples++ = adpcm_ima_expand_nibble(&c->status[0], byte >> 4, 3);
931
*samples++ = adpcm_ima_expand_nibble(&c->status[st], byte & 0x0F, 3);
934
case AV_CODEC_ID_ADPCM_IMA_EA_SEAD:
935
for (n = nb_samples >> (1 - st); n > 0; n--) {
936
int byte = bytestream2_get_byteu(&gb);
937
*samples++ = adpcm_ima_expand_nibble(&c->status[0], byte >> 4, 6);
938
*samples++ = adpcm_ima_expand_nibble(&c->status[st], byte & 0x0F, 6);
941
case AV_CODEC_ID_ADPCM_EA:
828
int32_t previous_left_sample, previous_right_sample;
829
int32_t current_left_sample, current_right_sample;
830
int32_t next_left_sample, next_right_sample;
831
int32_t coeff1l, coeff2l, coeff1r, coeff2r;
832
uint8_t shift_left, shift_right;
943
int previous_left_sample, previous_right_sample;
944
int current_left_sample, current_right_sample;
945
int next_left_sample, next_right_sample;
946
int coeff1l, coeff2l, coeff1r, coeff2r;
947
int shift_left, shift_right;
834
949
/* Each EA ADPCM frame has a 12-byte header followed by 30-byte pieces,
835
950
each coding 28 stereo samples. */
837
src += 4; // skip sample count (already read)
839
current_left_sample = (int16_t)bytestream_get_le16(&src);
840
previous_left_sample = (int16_t)bytestream_get_le16(&src);
841
current_right_sample = (int16_t)bytestream_get_le16(&src);
842
previous_right_sample = (int16_t)bytestream_get_le16(&src);
952
current_left_sample = sign_extend(bytestream2_get_le16u(&gb), 16);
953
previous_left_sample = sign_extend(bytestream2_get_le16u(&gb), 16);
954
current_right_sample = sign_extend(bytestream2_get_le16u(&gb), 16);
955
previous_right_sample = sign_extend(bytestream2_get_le16u(&gb), 16);
844
957
for (count1 = 0; count1 < nb_samples / 28; count1++) {
845
coeff1l = ea_adpcm_table[ *src >> 4 ];
846
coeff2l = ea_adpcm_table[(*src >> 4 ) + 4];
847
coeff1r = ea_adpcm_table[*src & 0x0F];
848
coeff2r = ea_adpcm_table[(*src & 0x0F) + 4];
958
int byte = bytestream2_get_byteu(&gb);
959
coeff1l = ea_adpcm_table[ byte >> 4 ];
960
coeff2l = ea_adpcm_table[(byte >> 4 ) + 4];
961
coeff1r = ea_adpcm_table[ byte & 0x0F];
962
coeff2r = ea_adpcm_table[(byte & 0x0F) + 4];
851
shift_left = 20 - (*src >> 4);
852
shift_right = 20 - (*src & 0x0F);
964
byte = bytestream2_get_byteu(&gb);
965
shift_left = 20 - (byte >> 4);
966
shift_right = 20 - (byte & 0x0F);
855
968
for (count2 = 0; count2 < 28; count2++) {
856
next_left_sample = sign_extend(*src >> 4, 4) << shift_left;
857
next_right_sample = sign_extend(*src, 4) << shift_right;
969
byte = bytestream2_get_byteu(&gb);
970
next_left_sample = sign_extend(byte >> 4, 4) << shift_left;
971
next_right_sample = sign_extend(byte, 4) << shift_right;
860
973
next_left_sample = (next_left_sample +
861
974
(current_left_sample * coeff1l) +
900
1016
*samples++ = c->status[channel].sample1;
903
src+=avctx->channels;
905
/* consume whole packet */
906
src = buf + buf_size;
1020
bytestream2_seek(&gb, 0, SEEK_END);
909
case CODEC_ID_ADPCM_EA_R1:
910
case CODEC_ID_ADPCM_EA_R2:
911
case CODEC_ID_ADPCM_EA_R3: {
1023
case AV_CODEC_ID_ADPCM_EA_R1:
1024
case AV_CODEC_ID_ADPCM_EA_R2:
1025
case AV_CODEC_ID_ADPCM_EA_R3: {
912
1026
/* channel numbering
913
1027
2chan: 0=fl, 1=fr
914
1028
4chan: 0=fl, 1=rl, 2=fr, 3=rr
915
1029
6chan: 0=fl, 1=c, 2=fr, 3=rl, 4=rr, 5=sub */
916
const int big_endian = avctx->codec->id == CODEC_ID_ADPCM_EA_R3;
917
int32_t previous_sample, current_sample, next_sample;
918
int32_t coeff1, coeff2;
1030
const int big_endian = avctx->codec->id == AV_CODEC_ID_ADPCM_EA_R3;
1031
int previous_sample, current_sample, next_sample;
920
1034
unsigned int channel;
921
1035
uint16_t *samplesC;
923
const uint8_t *src_end = buf + buf_size;
926
src += 4; // skip sample count (already read)
1039
for (channel=0; channel<avctx->channels; channel++)
1040
offsets[channel] = (big_endian ? bytestream2_get_be32(&gb) :
1041
bytestream2_get_le32(&gb)) +
1042
(avctx->channels + 1) * 4;
928
1044
for (channel=0; channel<avctx->channels; channel++) {
929
int32_t offset = (big_endian ? bytestream_get_be32(&src)
930
: bytestream_get_le32(&src))
931
+ (avctx->channels-channel-1) * 4;
933
if ((offset < 0) || (offset >= src_end - src - 4)) break;
935
samplesC = samples + channel;
937
if (avctx->codec->id == CODEC_ID_ADPCM_EA_R1) {
938
current_sample = (int16_t)bytestream_get_le16(&srcC);
939
previous_sample = (int16_t)bytestream_get_le16(&srcC);
1045
bytestream2_seek(&gb, offsets[channel], SEEK_SET);
1046
samplesC = samples_p[channel];
1048
if (avctx->codec->id == AV_CODEC_ID_ADPCM_EA_R1) {
1049
current_sample = sign_extend(bytestream2_get_le16(&gb), 16);
1050
previous_sample = sign_extend(bytestream2_get_le16(&gb), 16);
941
1052
current_sample = c->status[channel].predictor;
942
1053
previous_sample = c->status[channel].prev_sample;
945
1056
for (count1 = 0; count1 < nb_samples / 28; count1++) {
946
if (*srcC == 0xEE) { /* only seen in R2 and R3 */
948
if (srcC > src_end - 30*2) break;
949
current_sample = (int16_t)bytestream_get_be16(&srcC);
950
previous_sample = (int16_t)bytestream_get_be16(&srcC);
1057
int byte = bytestream2_get_byte(&gb);
1058
if (byte == 0xEE) { /* only seen in R2 and R3 */
1059
current_sample = sign_extend(bytestream2_get_be16(&gb), 16);
1060
previous_sample = sign_extend(bytestream2_get_be16(&gb), 16);
952
for (count2=0; count2<28; count2++) {
953
*samplesC = (int16_t)bytestream_get_be16(&srcC);
954
samplesC += avctx->channels;
1062
for (count2=0; count2<28; count2++)
1063
*samplesC++ = sign_extend(bytestream2_get_be16(&gb), 16);
957
coeff1 = ea_adpcm_table[ *srcC>>4 ];
958
coeff2 = ea_adpcm_table[(*srcC>>4) + 4];
959
shift = 20 - (*srcC++ & 0x0F);
1065
coeff1 = ea_adpcm_table[ byte >> 4 ];
1066
coeff2 = ea_adpcm_table[(byte >> 4) + 4];
1067
shift = 20 - (byte & 0x0F);
961
if (srcC > src_end - 14) break;
962
1069
for (count2=0; count2<28; count2++) {
964
next_sample = sign_extend(*srcC++, 4) << shift;
966
next_sample = sign_extend(*srcC >> 4, 4) << shift;
1071
next_sample = sign_extend(byte, 4) << shift;
1073
byte = bytestream2_get_byte(&gb);
1074
next_sample = sign_extend(byte >> 4, 4) << shift;
968
1077
next_sample += (current_sample * coeff1) +
969
1078
(previous_sample * coeff2);
983
1091
count = FFMAX(count, count1);
986
if (avctx->codec->id != CODEC_ID_ADPCM_EA_R1) {
1094
if (avctx->codec->id != AV_CODEC_ID_ADPCM_EA_R1) {
987
1095
c->status[channel].predictor = current_sample;
988
1096
c->status[channel].prev_sample = previous_sample;
992
1100
c->frame.nb_samples = count * 28;
1101
bytestream2_seek(&gb, 0, SEEK_END);
996
case CODEC_ID_ADPCM_EA_XAS:
1104
case AV_CODEC_ID_ADPCM_EA_XAS:
997
1105
for (channel=0; channel<avctx->channels; channel++) {
998
1106
int coeff[2][4], shift[4];
999
short *s2, *s = &samples[channel];
1000
for (n=0; n<4; n++, s+=32*avctx->channels) {
1107
int16_t *s = samples_p[channel];
1108
for (n = 0; n < 4; n++, s += 32) {
1109
int val = sign_extend(bytestream2_get_le16u(&gb), 16);
1001
1110
for (i=0; i<2; i++)
1002
coeff[i][n] = ea_adpcm_table[(src[0]&0x0F)+4*i];
1003
shift[n] = 20 - (src[2] & 0x0F);
1004
for (s2=s, i=0; i<2; i++, src+=2, s2+=avctx->channels)
1005
s2[0] = (src[0]&0xF0) + (src[1]<<8);
1111
coeff[i][n] = ea_adpcm_table[(val&0x0F)+4*i];
1114
val = sign_extend(bytestream2_get_le16u(&gb), 16);
1115
shift[n] = 20 - (val & 0x0F);
1008
1119
for (m=2; m<32; m+=2) {
1009
s = &samples[m*avctx->channels + channel];
1010
for (n=0; n<4; n++, src++, s+=32*avctx->channels) {
1011
for (s2=s, i=0; i<8; i+=4, s2+=avctx->channels) {
1012
int level = sign_extend(*src >> (4 - i), 4) << shift[n];
1013
int pred = s2[-1*avctx->channels] * coeff[0][n]
1014
+ s2[-2*avctx->channels] * coeff[1][n];
1015
s2[0] = av_clip_int16((level + pred + 0x80) >> 8);
1120
s = &samples_p[channel][m];
1121
for (n = 0; n < 4; n++, s += 32) {
1123
int byte = bytestream2_get_byteu(&gb);
1125
level = sign_extend(byte >> 4, 4) << shift[n];
1126
pred = s[-1] * coeff[0][n] + s[-2] * coeff[1][n];
1127
s[0] = av_clip_int16((level + pred + 0x80) >> 8);
1129
level = sign_extend(byte, 4) << shift[n];
1130
pred = s[0] * coeff[0][n] + s[-1] * coeff[1][n];
1131
s[1] = av_clip_int16((level + pred + 0x80) >> 8);
1021
case CODEC_ID_ADPCM_IMA_AMV:
1022
case CODEC_ID_ADPCM_IMA_SMJPEG:
1023
if (avctx->codec->id == CODEC_ID_ADPCM_IMA_AMV) {
1024
c->status[0].predictor = sign_extend(bytestream_get_le16(&src), 16);
1025
c->status[0].step_index = av_clip(bytestream_get_le16(&src), 0, 88);
1136
case AV_CODEC_ID_ADPCM_IMA_AMV:
1137
case AV_CODEC_ID_ADPCM_IMA_SMJPEG:
1138
if (avctx->codec->id == AV_CODEC_ID_ADPCM_IMA_AMV) {
1139
c->status[0].predictor = sign_extend(bytestream2_get_le16u(&gb), 16);
1140
c->status[0].step_index = bytestream2_get_le16u(&gb);
1141
bytestream2_skipu(&gb, 4);
1028
c->status[0].predictor = sign_extend(bytestream_get_be16(&src), 16);
1029
c->status[0].step_index = av_clip(bytestream_get_byte(&src), 0, 88);
1033
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
1038
if (avctx->codec->id == CODEC_ID_ADPCM_IMA_AMV)
1039
FFSWAP(char, hi, lo);
1041
*samples++ = adpcm_ima_expand_nibble(&c->status[0],
1043
*samples++ = adpcm_ima_expand_nibble(&c->status[0],
1143
c->status[0].predictor = sign_extend(bytestream2_get_be16u(&gb), 16);
1144
c->status[0].step_index = bytestream2_get_byteu(&gb);
1145
bytestream2_skipu(&gb, 1);
1147
if (c->status[0].step_index > 88u) {
1148
av_log(avctx, AV_LOG_ERROR, "ERROR: step_index = %i\n",
1149
c->status[0].step_index);
1150
return AVERROR_INVALIDDATA;
1153
for (n = nb_samples >> (1 - st); n > 0; n--) {
1154
int hi, lo, v = bytestream2_get_byteu(&gb);
1156
if (avctx->codec->id == AV_CODEC_ID_ADPCM_IMA_AMV) {
1164
*samples++ = adpcm_ima_expand_nibble(&c->status[0], lo, 3);
1165
*samples++ = adpcm_ima_expand_nibble(&c->status[0], hi, 3);
1047
case CODEC_ID_ADPCM_CT:
1048
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
1168
case AV_CODEC_ID_ADPCM_CT:
1169
for (n = nb_samples >> (1 - st); n > 0; n--) {
1170
int v = bytestream2_get_byteu(&gb);
1050
1171
*samples++ = adpcm_ct_expand_nibble(&c->status[0 ], v >> 4 );
1051
1172
*samples++ = adpcm_ct_expand_nibble(&c->status[st], v & 0x0F);
1054
case CODEC_ID_ADPCM_SBPRO_4:
1055
case CODEC_ID_ADPCM_SBPRO_3:
1056
case CODEC_ID_ADPCM_SBPRO_2:
1175
case AV_CODEC_ID_ADPCM_SBPRO_4:
1176
case AV_CODEC_ID_ADPCM_SBPRO_3:
1177
case AV_CODEC_ID_ADPCM_SBPRO_2:
1057
1178
if (!c->status[0].step_index) {
1058
1179
/* the first byte is a raw sample */
1059
*samples++ = 128 * (*src++ - 0x80);
1180
*samples++ = 128 * (bytestream2_get_byteu(&gb) - 0x80);
1061
*samples++ = 128 * (*src++ - 0x80);
1182
*samples++ = 128 * (bytestream2_get_byteu(&gb) - 0x80);
1062
1183
c->status[0].step_index = 1;
1065
if (avctx->codec->id == CODEC_ID_ADPCM_SBPRO_4) {
1066
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
1186
if (avctx->codec->id == AV_CODEC_ID_ADPCM_SBPRO_4) {
1187
for (n = nb_samples >> (1 - st); n > 0; n--) {
1188
int byte = bytestream2_get_byteu(&gb);
1067
1189
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1069
1191
*samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
1070
src[0] & 0x0F, 4, 0);
1072
} else if (avctx->codec->id == CODEC_ID_ADPCM_SBPRO_3) {
1073
for (n = nb_samples / 3; n > 0; n--, src++) {
1074
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1075
src[0] >> 5 , 3, 0);
1076
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1077
(src[0] >> 2) & 0x07, 3, 0);
1078
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1079
src[0] & 0x03, 2, 0);
1194
} else if (avctx->codec->id == AV_CODEC_ID_ADPCM_SBPRO_3) {
1195
for (n = nb_samples / 3; n > 0; n--) {
1196
int byte = bytestream2_get_byteu(&gb);
1197
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1199
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1200
(byte >> 2) & 0x07, 3, 0);
1201
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1082
for (n = nb_samples >> (2 - st); n > 0; n--, src++) {
1083
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1084
src[0] >> 6 , 2, 2);
1085
*samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
1086
(src[0] >> 4) & 0x03, 2, 2);
1087
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1088
(src[0] >> 2) & 0x03, 2, 2);
1089
*samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
1090
src[0] & 0x03, 2, 2);
1094
case CODEC_ID_ADPCM_SWF:
1098
int k0, signmask, nb_bits, count;
1099
int size = buf_size*8;
1101
init_get_bits(&gb, buf, size);
1103
//read bits & initial values
1104
nb_bits = get_bits(&gb, 2)+2;
1105
//av_log(NULL,AV_LOG_INFO,"nb_bits: %d\n", nb_bits);
1106
table = swf_index_tables[nb_bits-2];
1107
k0 = 1 << (nb_bits-2);
1108
signmask = 1 << (nb_bits-1);
1110
while (get_bits_count(&gb) <= size - 22*avctx->channels) {
1111
for (i = 0; i < avctx->channels; i++) {
1112
*samples++ = c->status[i].predictor = get_sbits(&gb, 16);
1113
c->status[i].step_index = get_bits(&gb, 6);
1116
for (count = 0; get_bits_count(&gb) <= size - nb_bits*avctx->channels && count < 4095; count++) {
1119
for (i = 0; i < avctx->channels; i++) {
1120
// similar to IMA adpcm
1121
int delta = get_bits(&gb, nb_bits);
1122
int step = ff_adpcm_step_table[c->status[i].step_index];
1123
long vpdiff = 0; // vpdiff = (delta+0.5)*step/4
1134
if (delta & signmask)
1135
c->status[i].predictor -= vpdiff;
1137
c->status[i].predictor += vpdiff;
1139
c->status[i].step_index += table[delta & (~signmask)];
1141
c->status[i].step_index = av_clip(c->status[i].step_index, 0, 88);
1142
c->status[i].predictor = av_clip_int16(c->status[i].predictor);
1144
*samples++ = c->status[i].predictor;
1151
case CODEC_ID_ADPCM_YAMAHA:
1152
for (n = nb_samples >> (1 - st); n > 0; n--, src++) {
1205
for (n = nb_samples >> (2 - st); n > 0; n--) {
1206
int byte = bytestream2_get_byteu(&gb);
1207
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1209
*samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
1210
(byte >> 4) & 0x03, 2, 2);
1211
*samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
1212
(byte >> 2) & 0x03, 2, 2);
1213
*samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
1218
case AV_CODEC_ID_ADPCM_SWF:
1219
adpcm_swf_decode(avctx, buf, buf_size, samples);
1220
bytestream2_seek(&gb, 0, SEEK_END);
1222
case AV_CODEC_ID_ADPCM_YAMAHA:
1223
for (n = nb_samples >> (1 - st); n > 0; n--) {
1224
int v = bytestream2_get_byteu(&gb);
1154
1225
*samples++ = adpcm_yamaha_expand_nibble(&c->status[0 ], v & 0x0F);
1155
1226
*samples++ = adpcm_yamaha_expand_nibble(&c->status[st], v >> 4 );
1158
case CODEC_ID_ADPCM_THP:
1229
case AV_CODEC_ID_ADPCM_THP:
1160
1231
int table[2][16];
1161
1232
int prev[2][2];
1164
src += 4; // skip channel size
1165
src += 4; // skip number of samples (already read)
1167
for (i = 0; i < 32; i++)
1168
table[0][i] = (int16_t)bytestream_get_be16(&src);
1235
for (i = 0; i < 2; i++)
1236
for (n = 0; n < 16; n++)
1237
table[i][n] = sign_extend(bytestream2_get_be16u(&gb), 16);
1170
1239
/* Initialize the previous sample. */
1171
for (i = 0; i < 4; i++)
1172
prev[0][i] = (int16_t)bytestream_get_be16(&src);
1240
for (i = 0; i < 2; i++)
1241
for (n = 0; n < 2; n++)
1242
prev[i][n] = sign_extend(bytestream2_get_be16u(&gb), 16);
1174
1244
for (ch = 0; ch <= st; ch++) {
1175
samples = (short *)c->frame.data[0] + ch;
1245
samples = samples_p[ch];
1177
1247
/* Read in every sample for this channel. */
1178
1248
for (i = 0; i < nb_samples / 14; i++) {
1179
int index = (*src >> 4) & 7;
1180
unsigned int exp = *src++ & 15;
1249
int byte = bytestream2_get_byteu(&gb);
1250
int index = (byte >> 4) & 7;
1251
unsigned int exp = byte & 0x0F;
1181
1252
int factor1 = table[ch][index * 2];
1182
1253
int factor2 = table[ch][index * 2 + 1];
1184
1255
/* Decode 14 samples. */
1185
1256
for (n = 0; n < 14; n++) {
1186
1257
int32_t sampledat;
1187
if(n&1) sampledat = sign_extend(*src++, 4);
1188
else sampledat = sign_extend(*src >> 4, 4);
1260
sampledat = sign_extend(byte, 4);
1262
byte = bytestream2_get_byteu(&gb);
1263
sampledat = sign_extend(byte >> 4, 4);
1190
1266
sampledat = ((prev[ch][0]*factor1
1191
1267
+ prev[ch][1]*factor2) >> 11) + (sampledat << exp);
1192
1268
*samples = av_clip_int16(sampledat);
1193
1269
prev[ch][1] = prev[ch][0];
1194
1270
prev[ch][0] = *samples++;
1196
/* In case of stereo, skip one sample, this sample
1197
is for the other channel. */
1223
1303
.decode = adpcm_decode_frame, \
1224
1304
.capabilities = CODEC_CAP_DR1, \
1225
1305
.long_name = NULL_IF_CONFIG_SMALL(long_name_), \
1306
.sample_fmts = sample_fmts_, \
1228
1309
/* Note: Do not forget to add new entries to the Makefile as well. */
1229
ADPCM_DECODER(CODEC_ID_ADPCM_4XM, adpcm_4xm, "ADPCM 4X Movie");
1230
ADPCM_DECODER(CODEC_ID_ADPCM_CT, adpcm_ct, "ADPCM Creative Technology");
1231
ADPCM_DECODER(CODEC_ID_ADPCM_EA, adpcm_ea, "ADPCM Electronic Arts");
1232
ADPCM_DECODER(CODEC_ID_ADPCM_EA_MAXIS_XA, adpcm_ea_maxis_xa, "ADPCM Electronic Arts Maxis CDROM XA");
1233
ADPCM_DECODER(CODEC_ID_ADPCM_EA_R1, adpcm_ea_r1, "ADPCM Electronic Arts R1");
1234
ADPCM_DECODER(CODEC_ID_ADPCM_EA_R2, adpcm_ea_r2, "ADPCM Electronic Arts R2");
1235
ADPCM_DECODER(CODEC_ID_ADPCM_EA_R3, adpcm_ea_r3, "ADPCM Electronic Arts R3");
1236
ADPCM_DECODER(CODEC_ID_ADPCM_EA_XAS, adpcm_ea_xas, "ADPCM Electronic Arts XAS");
1237
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_AMV, adpcm_ima_amv, "ADPCM IMA AMV");
1238
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_DK3, adpcm_ima_dk3, "ADPCM IMA Duck DK3");
1239
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_DK4, adpcm_ima_dk4, "ADPCM IMA Duck DK4");
1240
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_EA_EACS, adpcm_ima_ea_eacs, "ADPCM IMA Electronic Arts EACS");
1241
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_EA_SEAD, adpcm_ima_ea_sead, "ADPCM IMA Electronic Arts SEAD");
1242
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_ISS, adpcm_ima_iss, "ADPCM IMA Funcom ISS");
1243
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt, "ADPCM IMA QuickTime");
1244
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_SMJPEG, adpcm_ima_smjpeg, "ADPCM IMA Loki SDL MJPEG");
1245
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav, "ADPCM IMA WAV");
1246
ADPCM_DECODER(CODEC_ID_ADPCM_IMA_WS, adpcm_ima_ws, "ADPCM IMA Westwood");
1247
ADPCM_DECODER(CODEC_ID_ADPCM_MS, adpcm_ms, "ADPCM Microsoft");
1248
ADPCM_DECODER(CODEC_ID_ADPCM_SBPRO_2, adpcm_sbpro_2, "ADPCM Sound Blaster Pro 2-bit");
1249
ADPCM_DECODER(CODEC_ID_ADPCM_SBPRO_3, adpcm_sbpro_3, "ADPCM Sound Blaster Pro 2.6-bit");
1250
ADPCM_DECODER(CODEC_ID_ADPCM_SBPRO_4, adpcm_sbpro_4, "ADPCM Sound Blaster Pro 4-bit");
1251
ADPCM_DECODER(CODEC_ID_ADPCM_SWF, adpcm_swf, "ADPCM Shockwave Flash");
1252
ADPCM_DECODER(CODEC_ID_ADPCM_THP, adpcm_thp, "ADPCM Nintendo Gamecube THP");
1253
ADPCM_DECODER(CODEC_ID_ADPCM_XA, adpcm_xa, "ADPCM CDROM XA");
1254
ADPCM_DECODER(CODEC_ID_ADPCM_YAMAHA, adpcm_yamaha, "ADPCM Yamaha");
1310
ADPCM_DECODER(AV_CODEC_ID_ADPCM_4XM, sample_fmts_s16p, adpcm_4xm, "ADPCM 4X Movie");
1311
ADPCM_DECODER(AV_CODEC_ID_ADPCM_CT, sample_fmts_s16, adpcm_ct, "ADPCM Creative Technology");
1312
ADPCM_DECODER(AV_CODEC_ID_ADPCM_EA, sample_fmts_s16, adpcm_ea, "ADPCM Electronic Arts");
1313
ADPCM_DECODER(AV_CODEC_ID_ADPCM_EA_MAXIS_XA, sample_fmts_s16, adpcm_ea_maxis_xa, "ADPCM Electronic Arts Maxis CDROM XA");
1314
ADPCM_DECODER(AV_CODEC_ID_ADPCM_EA_R1, sample_fmts_s16p, adpcm_ea_r1, "ADPCM Electronic Arts R1");
1315
ADPCM_DECODER(AV_CODEC_ID_ADPCM_EA_R2, sample_fmts_s16p, adpcm_ea_r2, "ADPCM Electronic Arts R2");
1316
ADPCM_DECODER(AV_CODEC_ID_ADPCM_EA_R3, sample_fmts_s16p, adpcm_ea_r3, "ADPCM Electronic Arts R3");
1317
ADPCM_DECODER(AV_CODEC_ID_ADPCM_EA_XAS, sample_fmts_s16p, adpcm_ea_xas, "ADPCM Electronic Arts XAS");
1318
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_AMV, sample_fmts_s16, adpcm_ima_amv, "ADPCM IMA AMV");
1319
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_APC, sample_fmts_s16, adpcm_ima_apc, "ADPCM IMA CRYO APC");
1320
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_DK3, sample_fmts_s16, adpcm_ima_dk3, "ADPCM IMA Duck DK3");
1321
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_DK4, sample_fmts_s16, adpcm_ima_dk4, "ADPCM IMA Duck DK4");
1322
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_EA_EACS, sample_fmts_s16, adpcm_ima_ea_eacs, "ADPCM IMA Electronic Arts EACS");
1323
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_EA_SEAD, sample_fmts_s16, adpcm_ima_ea_sead, "ADPCM IMA Electronic Arts SEAD");
1324
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_ISS, sample_fmts_s16, adpcm_ima_iss, "ADPCM IMA Funcom ISS");
1325
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_QT, sample_fmts_s16p, adpcm_ima_qt, "ADPCM IMA QuickTime");
1326
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_SMJPEG, sample_fmts_s16, adpcm_ima_smjpeg, "ADPCM IMA Loki SDL MJPEG");
1327
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_WAV, sample_fmts_s16p, adpcm_ima_wav, "ADPCM IMA WAV");
1328
ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_WS, sample_fmts_both, adpcm_ima_ws, "ADPCM IMA Westwood");
1329
ADPCM_DECODER(AV_CODEC_ID_ADPCM_MS, sample_fmts_s16, adpcm_ms, "ADPCM Microsoft");
1330
ADPCM_DECODER(AV_CODEC_ID_ADPCM_SBPRO_2, sample_fmts_s16, adpcm_sbpro_2, "ADPCM Sound Blaster Pro 2-bit");
1331
ADPCM_DECODER(AV_CODEC_ID_ADPCM_SBPRO_3, sample_fmts_s16, adpcm_sbpro_3, "ADPCM Sound Blaster Pro 2.6-bit");
1332
ADPCM_DECODER(AV_CODEC_ID_ADPCM_SBPRO_4, sample_fmts_s16, adpcm_sbpro_4, "ADPCM Sound Blaster Pro 4-bit");
1333
ADPCM_DECODER(AV_CODEC_ID_ADPCM_SWF, sample_fmts_s16, adpcm_swf, "ADPCM Shockwave Flash");
1334
ADPCM_DECODER(AV_CODEC_ID_ADPCM_THP, sample_fmts_s16p, adpcm_thp, "ADPCM Nintendo Gamecube THP");
1335
ADPCM_DECODER(AV_CODEC_ID_ADPCM_XA, sample_fmts_s16p, adpcm_xa, "ADPCM CDROM XA");
1336
ADPCM_DECODER(AV_CODEC_ID_ADPCM_YAMAHA, sample_fmts_s16, adpcm_yamaha, "ADPCM Yamaha");