[FFmpeg-devel] [PATCH] add MTAF demuxer and decoder

James Almer jamrial at gmail.com
Mon May 16 00:55:34 CEST 2016


On 5/15/2016 6:33 PM, Paul B Mahol wrote:
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index 3f0ffd1..3a9dd95 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -707,6 +707,7 @@ OBJS-$(CONFIG_ADPCM_IMA_WAV_ENCODER)      += adpcmenc.o adpcm_data.o
>  OBJS-$(CONFIG_ADPCM_IMA_WS_DECODER)       += adpcm.o adpcm_data.o
>  OBJS-$(CONFIG_ADPCM_MS_DECODER)           += adpcm.o adpcm_data.o
>  OBJS-$(CONFIG_ADPCM_MS_ENCODER)           += adpcmenc.o adpcm_data.o
> +OBJS-$(CONFIG_ADPCM_MTAF_DECODER)         += adpcm.o adpcm_data.o
>  OBJS-$(CONFIG_ADPCM_PSX_DECODER)          += adpcm.o adpcm_data.o
>  OBJS-$(CONFIG_ADPCM_SBPRO_2_DECODER)      += adpcm.o adpcm_data.o
>  OBJS-$(CONFIG_ADPCM_SBPRO_3_DECODER)      += adpcm.o adpcm_data.o
> diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
> index 0b6b92e..e624b85 100644
> --- a/libavcodec/adpcm.c
> +++ b/libavcodec/adpcm.c
> @@ -107,6 +107,10 @@ static av_cold int adpcm_decode_init(AVCodecContext * avctx)
>      case AV_CODEC_ID_ADPCM_EA_XAS:
>          max_channels = 6;
>          break;
> +    case AV_CODEC_ID_ADPCM_MTAF:
> +        min_channels = 2;
> +        max_channels = 8;
> +        break;
>      case AV_CODEC_ID_ADPCM_PSX:
>          max_channels = 8;
>          break;
> @@ -159,6 +163,7 @@ static av_cold int adpcm_decode_init(AVCodecContext * avctx)
>          case AV_CODEC_ID_ADPCM_AFC:
>          case AV_CODEC_ID_ADPCM_DTK:
>          case AV_CODEC_ID_ADPCM_PSX:
> +        case AV_CODEC_ID_ADPCM_MTAF:
>              avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
>              break;
>          case AV_CODEC_ID_ADPCM_IMA_WS:
> @@ -342,6 +347,15 @@ static inline int16_t adpcm_yamaha_expand_nibble(ADPCMChannelStatus *c, uint8_t
>      return c->predictor;
>  }
>  
> +static inline int16_t adpcm_mtaf_expand_nibble(ADPCMChannelStatus *c, uint8_t nibble)
> +{

You should use local variables here, like in other expand_nibbble() functions.

> +    c->predictor += ff_adpcm_mtaf_stepsize[c->step][nibble];
> +    c->predictor = av_clip_int16(c->predictor);
> +    c->step += ff_adpcm_index_table[nibble];
> +    c->step = av_clip(c->step, 0, 31);

av_clip_uintp2(step, 5);



More information about the ffmpeg-devel mailing list