From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id ADF204DE30 for ; Tue, 6 Jan 2026 12:30:47 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'QT3b771Ji7QCysf9LKz6ClM3V+uz2hoRNlyBEf5KwEk=', expected b'WlGTN+8n3W7mVavOJYt05n7e0S5W64I7V38RGcYzn3o=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1767702619; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=QT3b771Ji7QCysf9LKz6ClM3V+uz2hoRNlyBEf5KwEk=; b=4na3leArqbEQ5SgPmZ0hT/hfeO6EJUG1+sf8UUgak0A0r5HkNvfCrqvUp+sUzwtGVjqAv Xo3VH/670bSDauT6CsniQqD/iwxpff5dGmlmf5khzuwepklOgSo2p2rrSBA9YZ7/HE29gEY MvmiivlCGrlgo0sE58N5/SyOoBlIsc7h1vPdJVjOWX8+XfUCHRmZ//UekXVhmnQbkYD3hA0 JHeX1kMmMg2306MsHc4oJrdu3bcI0pKg+xl1EJvfE7FZFz0uURii9xwxBeXWSO7YTDcGusN wT1kJfP0ustj4wMEDgVJ84A33eJdRnUqaBOZkdg2Lw9oe3zaoqwYjgJXcLYw== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 53F0E690D3A; Tue, 6 Jan 2026 14:30:19 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1767702595; b=YeLkAwzXibSisNc6jZw4dwIPzaAJy+bPnVUgAfUphxppE3oLWresK6ydbyxBPnATb4zhs HgqN56eF2VBOyP4VM/2zpFI2tTg2ab1MMruTF8z5FoedCm6IvSbKQKw8TgKQPdiETYaR3AE 5BCiTVDSNHaD6dwNZAhxZuYvbKbbbHqD/ZQR6WKOKeTU3lrvqUtJvTOo47l6v+zurlvygXs lG4YhXfpnIMm6gBYN37pWCE7jpaJVkFcwYMyRFpo5RfMda6guSh/wKVqQfpkt1B+RPhaYpT 1qS/uZctE5Xg9SWF6Oj0Q2r0nIdAwhZynMqkQKZdXnZKFdylzinqsaopO3sA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1767702595; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=3xe469a1EUKgV6BiYIX4zSl96fpBkYzC3QyCsZ81Pms=; b=psGqV2h1YtR8LB11oAm03GQHDXdqOKuLaMiduZPTSADv6wmGNQb3EWR6fbvwIFAcxB1qp HlZc1qHhmWk3ntMuJUN/9AbsQ4Q3sIeQQRuuSZchOTndF29kLrVFViamozNh2K4JmMDNvpn Lem3AqSamD1akOCCdxXNuJU+/ul4Sqv7aYlGVgPst8y6ww9+yqRicAoFwdFvVQjwd9QlXER +DVeFkJOoRDRQcPtZC+H5jOK+YX4sphkYuiCCVaZaz7gH6JjyZJ3UlwymGG7Ah6jFGrkbv7 BTHs6Z84BhzEc0EZTrsxQtlWAIqPtcCkqNcH3xn8ktopG/ZHTFNYC0zHjVCQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1767702585; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=WlGTN+8n3W7mVavOJYt05n7e0S5W64I7V38RGcYzn3o=; b=hD+4rHyf/3lxK82Lt6pZPNrP/Tl2Ap34UULXiMralI9re50CcKyJWLeU0CYGLBj6VnABz d81zYcF+1p6CelYYtD0gUczHYIRmNsvPtTdZTgO5VWf4iKyeEHioC/m26Rad9envz5yNdax QXpAEnPrUWU7A7CS4QYSKY45BASuJfUS/V/k5cCKk4OkPx74ZVzASuZDsRooDEh9v7DMpup LWHfKGblqqCvxaT0j0C7kAh5bQLd0DRm6dJshbGamfxM/i4/EEPXX/zG2JuPjpCMjDvph7l iHrSwxMt6l6ze4ZXtuZxtEVB37nybUcTHVQPYd0Z09x8CezpGjit3gSI/xWQ== Received: from de3a2b3407a2 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 199DD690D12 for ; Tue, 6 Jan 2026 14:29:45 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Tue, 06 Jan 2026 12:29:26 -0000 Message-ID: <176770258538.25.8509473284417168537@4457048688e7> Message-ID-Hash: PHWYTTBV5BDOMORKZV3VHFFSQCO5IPXB X-Message-ID-Hash: PHWYTTBV5BDOMORKZV3VHFFSQCO5IPXB X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] avcodec/adpcmenc: Add ADPCM IMA Xbox encoder (PR #21391) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: winterheart via ffmpeg-devel Cc: winterheart Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21391 opened by winterheart URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21391 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21391.patch adpcm_ima_xbox is pretty similar to standard ADPCM IMA encoder, difference is only frame_size and block_align settings of ADPCM encoder. Signed-off-by: Azamat H. Hackimov >>From e57d1c67eb992a84d222eae6ece8ac5f2acabcf1 Mon Sep 17 00:00:00 2001 From: "Azamat H. Hackimov" Date: Sun, 4 Jan 2026 22:23:55 +0300 Subject: [PATCH] avcodec/adpcmenc: Add ADPCM IMA Xbox encoder adpcm_ima_xbox is pretty similar to standard ADPCM IMA encoder, difference is only frame_size and block_align settings of ADPCM encoder. Signed-off-by: Azamat H. Hackimov --- Changelog | 1 + doc/general_contents.texi | 2 +- libavcodec/Makefile | 1 + libavcodec/adpcmenc.c | 33 ++++++++++++++++++++------------- libavcodec/allcodecs.c | 1 + libavcodec/version.h | 2 +- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Changelog b/Changelog index 2f97b280cb..e1a628ffce 100644 --- a/Changelog +++ b/Changelog @@ -19,6 +19,7 @@ version : - JPEG-XS decoder and encoder through libsvtjpegxs - JPEG-XS raw bitstream muxer and demuxer - IAMF Projection mode Ambisonic Audio Elements muxing and demuxing +- ADPCM IMA Xbox encoder version 8.0: diff --git a/doc/general_contents.texi b/doc/general_contents.texi index 47ac1989f2..f7b5d46738 100644 --- a/doc/general_contents.texi +++ b/doc/general_contents.texi @@ -1255,7 +1255,7 @@ following image formats are supported: @item ADPCM IMA Duck DK4 @tab @tab X @tab Used in some Sega Saturn console games. @item ADPCM IMA Radical @tab @tab X -@item ADPCM IMA Xbox @tab @tab X +@item ADPCM IMA Xbox @tab X @tab X @item ADPCM Microsoft @tab X @tab X @item ADPCM MS IMA @tab X @tab X @item ADPCM Nintendo Gamecube AFC @tab @tab X diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 3d60347a19..383fd2592c 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1013,6 +1013,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_IMA_WS_ENCODER) += adpcmenc.o adpcm_data.o OBJS-$(CONFIG_ADPCM_IMA_XBOX_DECODER) += adpcm.o adpcm_data.o +OBJS-$(CONFIG_ADPCM_IMA_XBOX_ENCODER) += adpcmenc.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 diff --git a/libavcodec/adpcmenc.c b/libavcodec/adpcmenc.c index 96a053351d..69d49f1c33 100644 --- a/libavcodec/adpcmenc.c +++ b/libavcodec/adpcmenc.c @@ -136,6 +136,10 @@ static av_cold int adpcm_encode_init(AVCodecContext *avctx) avctx->block_align = s->block_size; avctx->bits_per_coded_sample = 4; ) /* End of CASE */ + CASE(ADPCM_IMA_XBOX, + avctx->frame_size = 65; + avctx->block_align = 36 * channels; + ) /* End of CASE */ CASE(ADPCM_IMA_QT, avctx->frame_size = 64; avctx->block_align = 34 * channels; @@ -623,7 +627,8 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, dst = avpkt->data; switch(avctx->codec->id) { - CASE(ADPCM_IMA_WAV, + case AV_CODEC_ID_ADPCM_IMA_WAV: + case AV_CODEC_ID_ADPCM_IMA_XBOX: { int blocks = (frame->nb_samples - 1) / 8; for (int ch = 0; ch < channels; ch++) { @@ -667,7 +672,8 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, } } } - ) /* End of CASE */ + } + break; CASE(ADPCM_IMA_QT, PutBitContext pb; init_put_bits(&pb, dst, pkt_size); @@ -1021,14 +1027,15 @@ const FFCodec ff_ ## name_ ## _encoder = { \ ADPCM_ENCODER_3(CONFIG_ ## codec ## _ENCODER, AV_CODEC_ID_ ## codec, \ name, sample_fmts, capabilities, long_name) -ADPCM_ENCODER(ADPCM_ARGO, adpcm_argo, sample_fmts_p, 0, "ADPCM Argonaut Games") -ADPCM_ENCODER(ADPCM_IMA_AMV, adpcm_ima_amv, sample_fmts, 0, "ADPCM IMA AMV") -ADPCM_ENCODER(ADPCM_IMA_APM, adpcm_ima_apm, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Ubisoft APM") -ADPCM_ENCODER(ADPCM_IMA_ALP, adpcm_ima_alp, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA High Voltage Software ALP") -ADPCM_ENCODER(ADPCM_IMA_QT, adpcm_ima_qt, sample_fmts_p, 0, "ADPCM IMA QuickTime") -ADPCM_ENCODER(ADPCM_IMA_SSI, adpcm_ima_ssi, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Simon & Schuster Interactive") -ADPCM_ENCODER(ADPCM_IMA_WAV, adpcm_ima_wav, sample_fmts_p, 0, "ADPCM IMA WAV") -ADPCM_ENCODER(ADPCM_IMA_WS, adpcm_ima_ws, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Westwood") -ADPCM_ENCODER(ADPCM_MS, adpcm_ms, sample_fmts, 0, "ADPCM Microsoft") -ADPCM_ENCODER(ADPCM_SWF, adpcm_swf, sample_fmts, 0, "ADPCM Shockwave Flash") -ADPCM_ENCODER(ADPCM_YAMAHA, adpcm_yamaha, sample_fmts, 0, "ADPCM Yamaha") +ADPCM_ENCODER(ADPCM_ARGO, adpcm_argo, sample_fmts_p, 0, "ADPCM Argonaut Games") +ADPCM_ENCODER(ADPCM_IMA_AMV, adpcm_ima_amv, sample_fmts, 0, "ADPCM IMA AMV") +ADPCM_ENCODER(ADPCM_IMA_APM, adpcm_ima_apm, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Ubisoft APM") +ADPCM_ENCODER(ADPCM_IMA_ALP, adpcm_ima_alp, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA High Voltage Software ALP") +ADPCM_ENCODER(ADPCM_IMA_QT, adpcm_ima_qt, sample_fmts_p, 0, "ADPCM IMA QuickTime") +ADPCM_ENCODER(ADPCM_IMA_SSI, adpcm_ima_ssi, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Simon & Schuster Interactive") +ADPCM_ENCODER(ADPCM_IMA_WAV, adpcm_ima_wav, sample_fmts_p, 0, "ADPCM IMA WAV") +ADPCM_ENCODER(ADPCM_IMA_WS, adpcm_ima_ws, sample_fmts, AV_CODEC_CAP_SMALL_LAST_FRAME, "ADPCM IMA Westwood") +ADPCM_ENCODER(ADPCM_IMA_XBOX, adpcm_ima_xbox, sample_fmts_p, 0, "ADPCM IMA Xbox") +ADPCM_ENCODER(ADPCM_MS, adpcm_ms, sample_fmts, 0, "ADPCM Microsoft") +ADPCM_ENCODER(ADPCM_SWF, adpcm_swf, sample_fmts, 0, "ADPCM Shockwave Flash") +ADPCM_ENCODER(ADPCM_YAMAHA, adpcm_yamaha, sample_fmts, 0, "ADPCM Yamaha") diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 042b07c895..6ccf53f1a0 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -699,6 +699,7 @@ extern const FFCodec ff_adpcm_ima_wav_encoder; extern const FFCodec ff_adpcm_ima_wav_decoder; extern const FFCodec ff_adpcm_ima_ws_encoder; extern const FFCodec ff_adpcm_ima_ws_decoder; +extern const FFCodec ff_adpcm_ima_xbox_encoder; extern const FFCodec ff_adpcm_ima_xbox_decoder; extern const FFCodec ff_adpcm_ms_encoder; extern const FFCodec ff_adpcm_ms_decoder; diff --git a/libavcodec/version.h b/libavcodec/version.h index 9d910cf848..8a10a7db97 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 23 +#define LIBAVCODEC_VERSION_MINOR 24 #define LIBAVCODEC_VERSION_MICRO 102 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org