Unified · Split
| @@ -15,6 +15,7 @@ version <next>: · 14 unmodified lines | |||
| 15 | - Argonaut Games ASF muxer | 15 | - Argonaut Games ASF muxer |
| 16 | - AV1 Low overhead bitstream format demuxer | 16 | - AV1 Low overhead bitstream format demuxer |
| 17 | - RPZA video encoder | 17 | - RPZA video encoder |
| 18 | - ADPCM IMA MOFLEX decoder | ||
| 18 | 19 | ||
| 19 | 20 | ||
| 20 | version 4.3: | 21 | version 4.3: |
| @@ -866,6 +866,7 @@ OBJS-$(CONFIG_ADPCM_IMA_DK4_DECODER) += adpcm.o adpcm_data.o · 865 unmodified lines | |||
| 866 | OBJS-$(CONFIG_ADPCM_IMA_EA_EACS_DECODER) += adpcm.o adpcm_data.o | 866 | OBJS-$(CONFIG_ADPCM_IMA_EA_EACS_DECODER) += adpcm.o adpcm_data.o |
| 867 | OBJS-$(CONFIG_ADPCM_IMA_EA_SEAD_DECODER) += adpcm.o adpcm_data.o | 867 | OBJS-$(CONFIG_ADPCM_IMA_EA_SEAD_DECODER) += adpcm.o adpcm_data.o |
| 868 | OBJS-$(CONFIG_ADPCM_IMA_ISS_DECODER) += adpcm.o adpcm_data.o | 868 | OBJS-$(CONFIG_ADPCM_IMA_ISS_DECODER) += adpcm.o adpcm_data.o |
| 869 | OBJS-$(CONFIG_ADPCM_IMA_MOFLEX_DECODER) += adpcm.o adpcm_data.o | ||
| 869 | OBJS-$(CONFIG_ADPCM_IMA_MTF_DECODER) += adpcm.o adpcm_data.o | 870 | OBJS-$(CONFIG_ADPCM_IMA_MTF_DECODER) += adpcm.o adpcm_data.o |
| 870 | OBJS-$(CONFIG_ADPCM_IMA_OKI_DECODER) += adpcm.o adpcm_data.o | 871 | OBJS-$(CONFIG_ADPCM_IMA_OKI_DECODER) += adpcm.o adpcm_data.o |
| 871 | OBJS-$(CONFIG_ADPCM_IMA_QT_DECODER) += adpcm.o adpcm_data.o | 872 | OBJS-$(CONFIG_ADPCM_IMA_QT_DECODER) += adpcm.o adpcm_data.o |
| @@ -210,6 +210,7 @@ static av_cold int adpcm_decode_init(AVCodecContext * avctx) · 209 unmodified lines | |||
| 210 | case AV_CODEC_ID_ADPCM_PSX: | 210 | case AV_CODEC_ID_ADPCM_PSX: |
| 211 | case AV_CODEC_ID_ADPCM_MTAF: | 211 | case AV_CODEC_ID_ADPCM_MTAF: |
| 212 | case AV_CODEC_ID_ADPCM_ARGO: | 212 | case AV_CODEC_ID_ADPCM_ARGO: |
| 213 | case AV_CODEC_ID_ADPCM_IMA_MOFLEX: | ||
| 213 | avctx->sample_fmt = AV_SAMPLE_FMT_S16P; | 214 | avctx->sample_fmt = AV_SAMPLE_FMT_S16P; |
| 214 | break; | 215 | break; |
| 215 | case AV_CODEC_ID_ADPCM_IMA_WS: | 216 | case AV_CODEC_ID_ADPCM_IMA_WS: |
| @@ -774,6 +775,7 @@ static int get_nb_samples(AVCodecContext *avctx, GetByteContext *gb, · 558 unmodified lines | |||
| 774 | case AV_CODEC_ID_ADPCM_4XM: | 775 | case AV_CODEC_ID_ADPCM_4XM: |
| 775 | case AV_CODEC_ID_ADPCM_AGM: | 776 | case AV_CODEC_ID_ADPCM_AGM: |
| 776 | case AV_CODEC_ID_ADPCM_IMA_DAT4: | 777 | case AV_CODEC_ID_ADPCM_IMA_DAT4: |
| 778 | case AV_CODEC_ID_ADPCM_IMA_MOFLEX: | ||
| 777 | case AV_CODEC_ID_ADPCM_IMA_ISS: header_size = 4 * ch; break; | 779 | case AV_CODEC_ID_ADPCM_IMA_ISS: header_size = 4 * ch; break; |
| 778 | case AV_CODEC_ID_ADPCM_IMA_AMV: header_size = 8; break; | 780 | case AV_CODEC_ID_ADPCM_IMA_AMV: header_size = 8; break; |
| 779 | case AV_CODEC_ID_ADPCM_IMA_SMJPEG: header_size = 4 * ch; break; | 781 | case AV_CODEC_ID_ADPCM_IMA_SMJPEG: header_size = 4 * ch; break; |
| @@ -1298,6 +1300,29 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data, · 518 unmodified lines | |||
| 1298 | *samples++ = adpcm_ima_expand_nibble(&c->status[st], v2, 3); | 1300 | *samples++ = adpcm_ima_expand_nibble(&c->status[st], v2, 3); |
| 1299 | } | 1301 | } |
| 1300 | break; | 1302 | break; |
| 1303 | case AV_CODEC_ID_ADPCM_IMA_MOFLEX: | ||
| 1304 | for (channel = 0; channel < avctx->channels; channel++) { | ||
| 1305 | cs = &c->status[channel]; | ||
| 1306 | cs->step_index = sign_extend(bytestream2_get_le16u(&gb), 16); | ||
| 1307 | cs->predictor = sign_extend(bytestream2_get_le16u(&gb), 16); | ||
| 1308 | if (cs->step_index > 88u){ | ||
| 1309 | av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n", | ||
| 1310 | channel, cs->step_index); | ||
| 1311 | return AVERROR_INVALIDDATA; | ||
| 1312 | } | ||
| 1313 | } | ||
| 1314 | |||
| 1315 | for (int subframe = 0; subframe < nb_samples / 256; subframe++) { | ||
| 1316 | for (channel = 0; channel < avctx->channels; channel++) { | ||
| 1317 | samples = samples_p[channel] + 256 * subframe; | ||
| 1318 | for (n = 0; n < 256; n += 2) { | ||
| 1319 | int v = bytestream2_get_byteu(&gb); | ||
| 1320 | *samples++ = adpcm_ima_expand_nibble(&c->status[channel], v & 0x0F, 3); | ||
| 1321 | *samples++ = adpcm_ima_expand_nibble(&c->status[channel], v >> 4 , 3); | ||
| 1322 | } | ||
| 1323 | } | ||
| 1324 | } | ||
| 1325 | break; | ||
| 1301 | case AV_CODEC_ID_ADPCM_IMA_DAT4: | 1326 | case AV_CODEC_ID_ADPCM_IMA_DAT4: |
| 1302 | for (channel = 0; channel < avctx->channels; channel++) { | 1327 | for (channel = 0; channel < avctx->channels; channel++) { |
| 1303 | cs = &c->status[channel]; | 1328 | cs = &c->status[channel]; |
| @@ -2107,6 +2132,7 @@ ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_DK4, sample_fmts_s16, adpcm_ima_dk4, · 803 unmodified lines | |||
| 2107 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_EA_EACS, sample_fmts_s16, adpcm_ima_ea_eacs, "ADPCM IMA Electronic Arts EACS"); | 2132 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_EA_EACS, sample_fmts_s16, adpcm_ima_ea_eacs, "ADPCM IMA Electronic Arts EACS"); |
| 2108 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_EA_SEAD, sample_fmts_s16, adpcm_ima_ea_sead, "ADPCM IMA Electronic Arts SEAD"); | 2133 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_EA_SEAD, sample_fmts_s16, adpcm_ima_ea_sead, "ADPCM IMA Electronic Arts SEAD"); |
| 2109 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_ISS, sample_fmts_s16, adpcm_ima_iss, "ADPCM IMA Funcom ISS"); | 2134 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_ISS, sample_fmts_s16, adpcm_ima_iss, "ADPCM IMA Funcom ISS"); |
| 2135 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_MOFLEX, sample_fmts_s16p, adpcm_ima_moflex, "ADPCM IMA MobiClip MOFLEX"); | ||
| 2110 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_MTF, sample_fmts_s16, adpcm_ima_mtf, "ADPCM IMA Capcom's MT Framework"); | 2136 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_MTF, sample_fmts_s16, adpcm_ima_mtf, "ADPCM IMA Capcom's MT Framework"); |
| 2111 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_OKI, sample_fmts_s16, adpcm_ima_oki, "ADPCM IMA Dialogic OKI"); | 2137 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_OKI, sample_fmts_s16, adpcm_ima_oki, "ADPCM IMA Dialogic OKI"); |
| 2112 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_QT, sample_fmts_s16p, adpcm_ima_qt, "ADPCM IMA QuickTime"); | 2138 | ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_QT, sample_fmts_s16p, adpcm_ima_qt, "ADPCM IMA QuickTime"); |
| @@ -619,6 +619,7 @@ extern AVCodec ff_adpcm_ima_dk4_decoder; · 618 unmodified lines | |||
| 619 | extern AVCodec ff_adpcm_ima_ea_eacs_decoder; | 619 | extern AVCodec ff_adpcm_ima_ea_eacs_decoder; |
| 620 | extern AVCodec ff_adpcm_ima_ea_sead_decoder; | 620 | extern AVCodec ff_adpcm_ima_ea_sead_decoder; |
| 621 | extern AVCodec ff_adpcm_ima_iss_decoder; | 621 | extern AVCodec ff_adpcm_ima_iss_decoder; |
| 622 | extern AVCodec ff_adpcm_ima_moflex_decoder; | ||
| 622 | extern AVCodec ff_adpcm_ima_mtf_decoder; | 623 | extern AVCodec ff_adpcm_ima_mtf_decoder; |
| 623 | extern AVCodec ff_adpcm_ima_oki_decoder; | 624 | extern AVCodec ff_adpcm_ima_oki_decoder; |
| 624 | extern AVCodec ff_adpcm_ima_qt_encoder; | 625 | extern AVCodec ff_adpcm_ima_qt_encoder; |
| @@ -2376,6 +2376,13 @@ static const AVCodecDescriptor codec_descriptors[] = { · 2375 unmodified lines | |||
| 2376 | .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Cunning Developments"), | 2376 | .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Cunning Developments"), |
| 2377 | .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, | 2377 | .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, |
| 2378 | }, | 2378 | }, |
| 2379 | { | ||
| 2380 | .id = AV_CODEC_ID_ADPCM_IMA_MOFLEX, | ||
| 2381 | .type = AVMEDIA_TYPE_AUDIO, | ||
| 2382 | .name = "adpcm_ima_moflex", | ||
| 2383 | .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA MobiClip MOFLEX"), | ||
| 2384 | .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, | ||
| 2385 | }, | ||
| 2379 | 2386 | ||
| 2380 | /* AMR */ | 2387 | /* AMR */ |
| 2381 | { | 2388 | { |
| @@ -388,6 +388,7 @@ enum AVCodecID { · 387 unmodified lines | |||
| 388 | AV_CODEC_ID_ADPCM_IMA_ALP, | 388 | AV_CODEC_ID_ADPCM_IMA_ALP, |
| 389 | AV_CODEC_ID_ADPCM_IMA_MTF, | 389 | AV_CODEC_ID_ADPCM_IMA_MTF, |
| 390 | AV_CODEC_ID_ADPCM_IMA_CUNNING, | 390 | AV_CODEC_ID_ADPCM_IMA_CUNNING, |
| 391 | AV_CODEC_ID_ADPCM_IMA_MOFLEX, | ||
| 391 | 392 | ||
| 392 | /* AMR */ | 393 | /* AMR */ |
| 393 | AV_CODEC_ID_AMR_NB = 0x12000, | 394 | AV_CODEC_ID_AMR_NB = 0x12000, |
| @@ -1664,6 +1664,8 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba, · 1663 unmodified lines | |||
| 1664 | if (ch > 0 && ch < INT_MAX/16) { | 1664 | if (ch > 0 && ch < INT_MAX/16) { |
| 1665 | /* calc from frame_bytes and channels */ | 1665 | /* calc from frame_bytes and channels */ |
| 1666 | switch (id) { | 1666 | switch (id) { |
| 1667 | case AV_CODEC_ID_ADPCM_IMA_MOFLEX: | ||
| 1668 | return (frame_bytes - 4 * ch) / (128 * ch) * 256; | ||
| 1667 | case AV_CODEC_ID_ADPCM_AFC: | 1669 | case AV_CODEC_ID_ADPCM_AFC: |
| 1668 | return frame_bytes / (9 * ch) * 16; | 1670 | return frame_bytes / (9 * ch) * 16; |
| 1669 | case AV_CODEC_ID_ADPCM_PSX: | 1671 | case AV_CODEC_ID_ADPCM_PSX: |
| @@ -28,8 +28,8 @@ · 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 101 | 31 | #define LIBAVCODEC_VERSION_MINOR 102 |
| 32 | #define LIBAVCODEC_VERSION_MICRO 101 | 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, \ |
| 35 | LIBAVCODEC_VERSION_MINOR, \ | 35 | LIBAVCODEC_VERSION_MINOR, \ |