Unified · Split
| @@ -7,6 +7,7 @@ version <next>: · 6 unmodified lines | |||
| 7 | - PGX decoder | 7 | - PGX decoder |
| 8 | - chromanr video filter | 8 | - chromanr video filter |
| 9 | - VDPAU accelerated HEVC 10/12bit decoding | 9 | - VDPAU accelerated HEVC 10/12bit decoding |
| 10 | - ADPCM IMA Ubisoft APM encoder | ||
| 10 | 11 | ||
| 11 | 12 | ||
| 12 | version 4.3: | 13 | version 4.3: |
| @@ -1113,7 +1113,7 @@ following image formats are supported: · 1112 unmodified lines | |||
| 1113 | @item ADPCM IMA High Voltage Software ALP @tab @tab X | 1113 | @item ADPCM IMA High Voltage Software ALP @tab @tab X |
| 1114 | @item ADPCM IMA QuickTime @tab X @tab X | 1114 | @item ADPCM IMA QuickTime @tab X @tab X |
| 1115 | @item ADPCM IMA Simon & Schuster Interactive @tab X @tab X | 1115 | @item ADPCM IMA Simon & Schuster Interactive @tab X @tab X |
| 1116 | @item ADPCM IMA Ubisoft APM @tab @tab X | 1116 | @item ADPCM IMA Ubisoft APM @tab X @tab X |
| 1117 | @item ADPCM IMA Loki SDL MJPEG @tab @tab X | 1117 | @item ADPCM IMA Loki SDL MJPEG @tab @tab X |
| 1118 | @item ADPCM IMA WAV @tab X @tab X | 1118 | @item ADPCM IMA WAV @tab X @tab X |
| 1119 | @item ADPCM IMA Westwood @tab @tab X | 1119 | @item ADPCM IMA Westwood @tab @tab X |
| @@ -854,6 +854,7 @@ OBJS-$(CONFIG_ADPCM_IMA_AMV_DECODER) += adpcm.o adpcm_data.o · 853 unmodified lines | |||
| 854 | OBJS-$(CONFIG_ADPCM_IMA_ALP_DECODER) += adpcm.o adpcm_data.o | 854 | OBJS-$(CONFIG_ADPCM_IMA_ALP_DECODER) += adpcm.o adpcm_data.o |
| 855 | OBJS-$(CONFIG_ADPCM_IMA_APC_DECODER) += adpcm.o adpcm_data.o | 855 | OBJS-$(CONFIG_ADPCM_IMA_APC_DECODER) += adpcm.o adpcm_data.o |
| 856 | OBJS-$(CONFIG_ADPCM_IMA_APM_DECODER) += adpcm.o adpcm_data.o | 856 | OBJS-$(CONFIG_ADPCM_IMA_APM_DECODER) += adpcm.o adpcm_data.o |
| 857 | OBJS-$(CONFIG_ADPCM_IMA_APM_ENCODER) += adpcmenc.o adpcm_data.o | ||
| 857 | OBJS-$(CONFIG_ADPCM_IMA_CUNNING_DECODER) += adpcm.o adpcm_data.o | 858 | OBJS-$(CONFIG_ADPCM_IMA_CUNNING_DECODER) += adpcm.o adpcm_data.o |
| 858 | OBJS-$(CONFIG_ADPCM_IMA_DAT4_DECODER) += adpcm.o adpcm_data.o | 859 | OBJS-$(CONFIG_ADPCM_IMA_DAT4_DECODER) += adpcm.o adpcm_data.o |
| 859 | OBJS-$(CONFIG_ADPCM_IMA_DK3_DECODER) += adpcm.o adpcm_data.o | 860 | OBJS-$(CONFIG_ADPCM_IMA_DK3_DECODER) += adpcm.o adpcm_data.o |
| @@ -74,7 +74,9 @@ static av_cold int adpcm_encode_init(AVCodecContext *avctx) · 73 unmodified lines | |||
| 74 | return AVERROR(EINVAL); | 74 | return AVERROR(EINVAL); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | if (avctx->trellis && avctx->codec->id == AV_CODEC_ID_ADPCM_IMA_SSI) { | 77 | if (avctx->trellis && |
| 78 | (avctx->codec->id == AV_CODEC_ID_ADPCM_IMA_SSI || | ||
| 79 | avctx->codec->id == AV_CODEC_ID_ADPCM_IMA_APM)) { | ||
| 78 | /* | 80 | /* |
| 79 | * The current trellis implementation doesn't work for extended | 81 | * The current trellis implementation doesn't work for extended |
| 80 | * runs of samples without periodic resets. Disallow it. | 82 | * runs of samples without periodic resets. Disallow it. |
| @@ -145,6 +147,14 @@ static av_cold int adpcm_encode_init(AVCodecContext *avctx) · 64 unmodified lines | |||
| 145 | avctx->frame_size = BLKSIZE * 2 / avctx->channels; | 147 | avctx->frame_size = BLKSIZE * 2 / avctx->channels; |
| 146 | avctx->block_align = BLKSIZE; | 148 | avctx->block_align = BLKSIZE; |
| 147 | break; | 149 | break; |
| 150 | case AV_CODEC_ID_ADPCM_IMA_APM: | ||
| 151 | avctx->frame_size = BLKSIZE * 2 / avctx->channels; | ||
| 152 | avctx->block_align = BLKSIZE; | ||
| 153 | |||
| 154 | if (!(avctx->extradata = av_mallocz(28 + AV_INPUT_BUFFER_PADDING_SIZE))) | ||
| 155 | return AVERROR(ENOMEM); | ||
| 156 | avctx->extradata_size = 28; | ||
| 157 | break; | ||
| 148 | default: | 158 | default: |
| 149 | return AVERROR(EINVAL); | 159 | return AVERROR(EINVAL); |
| 150 | } | 160 | } |
| @@ -486,7 +496,8 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, · 335 unmodified lines | |||
| 486 | 496 | ||
| 487 | if (avctx->codec_id == AV_CODEC_ID_ADPCM_SWF) | 497 | if (avctx->codec_id == AV_CODEC_ID_ADPCM_SWF) |
| 488 | pkt_size = (2 + avctx->channels * (22 + 4 * (frame->nb_samples - 1)) + 7) / 8; | 498 | pkt_size = (2 + avctx->channels * (22 + 4 * (frame->nb_samples - 1)) + 7) / 8; |
| 489 | else if (avctx->codec_id == AV_CODEC_ID_ADPCM_IMA_SSI) | 499 | else if (avctx->codec_id == AV_CODEC_ID_ADPCM_IMA_SSI || |
| 500 | avctx->codec_id == AV_CODEC_ID_ADPCM_IMA_APM) | ||
| 490 | pkt_size = (frame->nb_samples * avctx->channels) / 2; | 501 | pkt_size = (frame->nb_samples * avctx->channels) / 2; |
| 491 | else | 502 | else |
| 492 | pkt_size = avctx->block_align; | 503 | pkt_size = avctx->block_align; |
| @@ -711,6 +722,24 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, · 218 unmodified lines | |||
| 711 | *dst++ = nibble; | 722 | *dst++ = nibble; |
| 712 | } | 723 | } |
| 713 | break; | 724 | break; |
| 725 | case AV_CODEC_ID_ADPCM_IMA_APM: | ||
| 726 | { | ||
| 727 | PutBitContext pb; | ||
| 728 | init_put_bits(&pb, dst, pkt_size); | ||
| 729 | |||
| 730 | av_assert0(avctx->trellis == 0); | ||
| 731 | |||
| 732 | for (n = frame->nb_samples / 2; n > 0; n--) { | ||
| 733 | for (ch = 0; ch < avctx->channels; ch++) { | ||
| 734 | put_bits(&pb, 4, adpcm_ima_qt_compress_sample(c->status + ch, *samples++)); | ||
| 735 | put_bits(&pb, 4, adpcm_ima_qt_compress_sample(c->status + ch, samples[st])); | ||
| 736 | } | ||
| 737 | samples += avctx->channels; | ||
| 738 | } | ||
| 739 | |||
| 740 | flush_put_bits(&pb); | ||
| 741 | break; | ||
| 742 | } | ||
| 714 | default: | 743 | default: |
| 715 | return AVERROR(EINVAL); | 744 | return AVERROR(EINVAL); |
| 716 | } | 745 | } |
| @@ -743,6 +772,7 @@ AVCodec ff_ ## name_ ## _encoder = { \ · 26 unmodified lines | |||
| 743 | .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, \ | 772 | .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, \ |
| 744 | } | 773 | } |
| 745 | 774 | ||
| 775 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_APM, adpcm_ima_apm, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Ubisoft APM"); | ||
| 746 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt, sample_fmts_p, 0, "ADPCM IMA QuickTime"); | 776 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt, sample_fmts_p, 0, "ADPCM IMA QuickTime"); |
| 747 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_SSI, adpcm_ima_ssi, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Simon & Schuster Interactive"); | 777 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_SSI, adpcm_ima_ssi, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Simon & Schuster Interactive"); |
| 748 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav, sample_fmts_p, 0, "ADPCM IMA WAV"); | 778 | ADPCM_ENCODER(AV_CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav, sample_fmts_p, 0, "ADPCM IMA WAV"); |
| @@ -608,6 +608,7 @@ extern AVCodec ff_adpcm_ima_amv_decoder; · 607 unmodified lines | |||
| 608 | extern AVCodec ff_adpcm_ima_alp_decoder; | 608 | extern AVCodec ff_adpcm_ima_alp_decoder; |
| 609 | extern AVCodec ff_adpcm_ima_apc_decoder; | 609 | extern AVCodec ff_adpcm_ima_apc_decoder; |
| 610 | extern AVCodec ff_adpcm_ima_apm_decoder; | 610 | extern AVCodec ff_adpcm_ima_apm_decoder; |
| 611 | extern AVCodec ff_adpcm_ima_apm_encoder; | ||
| 611 | extern AVCodec ff_adpcm_ima_cunning_decoder; | 612 | extern AVCodec ff_adpcm_ima_cunning_decoder; |
| 612 | extern AVCodec ff_adpcm_ima_dat4_decoder; | 613 | extern AVCodec ff_adpcm_ima_dat4_decoder; |
| 613 | extern AVCodec ff_adpcm_ima_dk3_decoder; | 614 | extern AVCodec ff_adpcm_ima_dk3_decoder; |
| @@ -1481,6 +1481,7 @@ int av_get_exact_bits_per_sample(enum AVCodecID codec_id) · 1480 unmodified lines | |||
| 1481 | case AV_CODEC_ID_8SVX_FIB: | 1481 | case AV_CODEC_ID_8SVX_FIB: |
| 1482 | case AV_CODEC_ID_ADPCM_CT: | 1482 | case AV_CODEC_ID_ADPCM_CT: |
| 1483 | case AV_CODEC_ID_ADPCM_IMA_APC: | 1483 | case AV_CODEC_ID_ADPCM_IMA_APC: |
| 1484 | case AV_CODEC_ID_ADPCM_IMA_APM: | ||
| 1484 | case AV_CODEC_ID_ADPCM_IMA_EA_SEAD: | 1485 | case AV_CODEC_ID_ADPCM_IMA_EA_SEAD: |
| 1485 | case AV_CODEC_ID_ADPCM_IMA_OKI: | 1486 | case AV_CODEC_ID_ADPCM_IMA_OKI: |
| 1486 | case AV_CODEC_ID_ADPCM_IMA_WS: | 1487 | case AV_CODEC_ID_ADPCM_IMA_WS: |
| @@ -28,7 +28,7 @@ · 27 unmodified lines | |||
| 28 | #include "libavutil/version.h" | 28 | #include "libavutil/version.h" |
| 29 | 29 | ||
| 30 | #define LIBAVCODEC_VERSION_MAJOR 58 | 30 | #define LIBAVCODEC_VERSION_MAJOR 58 |
| 31 | #define LIBAVCODEC_VERSION_MINOR 96 | 31 | #define LIBAVCODEC_VERSION_MINOR 97 |
| 32 | #define LIBAVCODEC_VERSION_MICRO 100 | 32 | #define LIBAVCODEC_VERSION_MICRO 100 |
| 33 | 33 | ||
| 34 | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | 34 | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |