From patchwork Sat Dec 30 21:12:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 45395 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp5483200pzh; Sat, 30 Dec 2023 13:12:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IH0tByWSSiVgUJwG3fsSuFpk+NGw4NSCy3QiHn3cqlpvPh/W5+3JUfY7thCtrVfSBtxovsq X-Received: by 2002:a19:e043:0:b0:50c:327:9932 with SMTP id g3-20020a19e043000000b0050c03279932mr6246580lfj.107.1703970769268; Sat, 30 Dec 2023 13:12:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703970769; cv=none; d=google.com; s=arc-20160816; b=GkfwtTG4ABPp9SnFEiB+qAOygmQFMGtHAKTJZ0NUG3I5Dap+WpMbmOh133Q6j+2avb e9I4peE+YqcRUr2gJGFV4FvjxvOL5fCmmtO1DUG9HwnXHv1HczfPW0r7vjMmg96A94sV OIstl4Uw7y5hSSZwGL5VDno8HviM5JGenQiRn8UTg70ge3ayGDllcq9n5sVfxnD8ETcD Vo/aKIYZoiD2O5eVrq/19l/fdRCTyfniEblBPx3BIULhqHtaQNudQTDIsRPdiWbxDV4n eV1hkzimXdLkM8Oy7F9w76KGpdb969zjC1q1OEu0X6NSvF35a/GN/k/EE9hEh0Th3IqC tgpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:date:to:from:message-id:delivered-to; bh=PNHG2KG2ywagw2Vsu54rfab9RhAJkfwqczR18+2hnyA=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=rPTAc5v+GtDf1k6wVaPmMjNgkNz2zfPrH3fyjn7ymk+gxVoSrtM8Y8W7KCsjwBOrUf ay2MTeCD+UoSmBrWcQQco5ds7E3CkJZCZmdxAqFVXGaiS2nRgDsUdMGViyHBo7Prh4Hb I7zLKXeIN05dxQ2jO9jt7912+u2Mvnx6ouXTH915vIQage4v0/7ehOl5QXJ9KamwLOvX ahqa/uBAc0PMS+4Lvx7LczFdLGKBXc8P/yJ85r6wLqzX+uEucuVk2uttZH0k5zFN3DPH 7+9dtdXtturcEsox9LStgfL8tY2kNXQdOxDui6lqyIw4XIlWTECzcMXo9Zvk7/Qc1HBy 4uDA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c9-20020a1709060fc900b00a26eb9b2d62si5433335ejk.727.2023.12.30.13.12.48; Sat, 30 Dec 2023 13:12:49 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4075868CC2F; Sat, 30 Dec 2023 23:12:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9C57D68BD5A for ; Sat, 30 Dec 2023 23:12:37 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id 288615428493 for ; Sat, 30 Dec 2023 22:12:37 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id D86D55428441 for ; Sat, 30 Dec 2023 22:12:36 +0100 (CET) Message-ID: From: Tomas =?iso-8859-1?q?H=E4rdin?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 30 Dec 2023 22:12:35 +0100 User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/6] doc/general_contents.texi: Add missing ADPCM IMA APC entry X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oTHBTNPjkJUc Addressed some comments and reordered some patches /Tomas From 90954f54d82bd0ceda0400ceb0e92e1affecf3db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 26 Dec 2023 15:03:51 +0100 Subject: [PATCH 1/6] doc/general_contents.texi: Add missing ADPCM IMA APC entry --- doc/general_contents.texi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/general_contents.texi b/doc/general_contents.texi index 8b48fed060..ec7516dce8 100644 --- a/doc/general_contents.texi +++ b/doc/general_contents.texi @@ -1188,6 +1188,8 @@ following image formats are supported: @item ADPCM IMA Acorn Replay @tab @tab X @item ADPCM IMA AMV @tab X @tab X @tab Used in AMV files +@item ADPCM IMA APC @tab @tab X + @tab Codec used in games by Cryo Interactive @item ADPCM IMA Cunning Developments @tab @tab X @item ADPCM IMA Electronic Arts EACS @tab @tab X @item ADPCM IMA Electronic Arts SEAD @tab @tab X -- 2.39.2 From patchwork Sat Dec 30 21:13:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 45396 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp5483438pzh; Sat, 30 Dec 2023 13:13:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IFWa9gmHdJWOQZ4Qc/bHTioeQBL1BvDshuuSLUMRKJZWhP8pNqy4BcImUmUR5fjd3mla2b8 X-Received: by 2002:a05:6512:94f:b0:50e:4b42:7d7 with SMTP id u15-20020a056512094f00b0050e4b4207d7mr2383761lft.200.1703970806938; Sat, 30 Dec 2023 13:13:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703970806; cv=none; d=google.com; s=arc-20160816; b=UjIXYKk+waIyjuzYjMMA85/OMfn0MFxMvY7wusnDR+o6czsnvDjpxgwtcajO1L+Mb+ 2WUl4cG8E6tEp4IJxZydhD7YDgUyF8ziJ+jjP59FhM+iB9lXl8MC5HVSjDaJQp61AFFr 5v6BGnxhXvfGXtKt4W/7qNpyHS0FrxY3j5vQWlQLKopOERb2TgMKUcRvoW7bqIW2xTPx KxGyfPotq597/Xe2wRKNuf7T5jLSsbONY3on9VOwKY6IJTa/dfsVEnz3nf+CkPb9NKlk kDA/nn/EkHfN0FvqLz/4ijg6nvr/ImlunCxux+KYRzClbY/q581nY6p4rs7dUPobrql8 /uDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:references:in-reply-to:date:to:from :message-id:delivered-to; bh=qzvYTiC2LtzcwLsU87amqmThI1YXVqLjHqVE1kzp7NU=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=gSEEehaKH23DYSK2/kqnfX/3L3GCOo8eQtPWnymSlIhprrXo21KWZtZFT/g9QECQGA op1JSsj1czy+y50Qfa/9lmrGpdZqO/2L5DSooOMGbQ6HCyrfTuIhfzoFB8FTQVN6xcis Ltw4SbrLTF9TGWmPzWuua/eDiLLhzS8uNd7ITNNGNieBl11L38Tb1QrbK7JVNn5gbDR5 SvXqeJnX6UZkMQbOnoIwmwCqU7L6XDS4NKGz/a9kBFjSCmy79ctNJaemMr88NTuwyk/b WY0mTto8Fedg3hLEuvO06RrHmq56fUaTuIkF694iA6rW9ehLHm0pY1++FXh2TDh1DymJ aM0g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l18-20020a056402255200b0055333945e4bsi9321772edb.480.2023.12.30.13.13.26; Sat, 30 Dec 2023 13:13:26 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2FB6968CC70; Sat, 30 Dec 2023 23:13:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9996468BCEC for ; Sat, 30 Dec 2023 23:13:17 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id 413C75428493 for ; Sat, 30 Dec 2023 22:13:17 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id 003D45428441 for ; Sat, 30 Dec 2023 22:13:16 +0100 (CET) Message-ID: From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Sat, 30 Dec 2023 22:13:16 +0100 In-Reply-To: References: User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/6] lavf/apc: Read duration from file X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: l57m4HI4zpPH From 2ef5c89c3e3173b26690bad0279fd484a30a6268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 26 Dec 2023 14:31:59 +0100 Subject: [PATCH 2/6] lavf/apc: Read duration from file --- libavformat/apc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/apc.c b/libavformat/apc.c index b8b18c966c..7765c53088 100644 --- a/libavformat/apc.c +++ b/libavformat/apc.c @@ -24,6 +24,7 @@ #include "libavutil/channel_layout.h" #include "avformat.h" #include "demux.h" +#include "internal.h" static int apc_probe(const AVProbeData *p) { @@ -51,8 +52,9 @@ static int apc_read_header(AVFormatContext *s) st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_APC; - avio_rl32(pb); /* number of samples */ + st->duration = avio_rl32(pb); /* number of samples */ st->codecpar->sample_rate = avio_rl32(pb); + avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate); /* initial predictor values for adpcm decoder */ if ((ret = ff_get_extradata(s, st->codecpar, pb, 2 * 4)) < 0) -- 2.39.2 From patchwork Sat Dec 30 21:13:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 45397 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp5483541pzh; Sat, 30 Dec 2023 13:13:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IGRrQY1pPP+Y1tUZZBrQJgOo86X7s4VwJSnqmoT3LHGROwMSUYT8VLgHGvh9XTc4F1BFtKF X-Received: by 2002:a17:906:1603:b0:a23:62fd:e2f6 with SMTP id m3-20020a170906160300b00a2362fde2f6mr13766958ejd.30.1703970828818; Sat, 30 Dec 2023 13:13:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703970828; cv=none; d=google.com; s=arc-20160816; b=EUfhS/ErzxNiECvHgF0S3oNrgvOHqSy43nLcstEkpus74CPrFh7dBAzXj5rKDwE0v6 +eCWOG4XSoFV9GIUWry2LRgm3uUSzrE/Rk+ARr82ohyciWHV/yEkz0hv+XpuEVXcuzIT vhpSbiogI+mupZYZwDriID3SYo3ACriA2LxK+129tZL4T3X98S7W5t/v0KGw3EMX7Z7G oZSHd1gwsVL1l2DAOW79PDxEdAYjconc+kzfVU6UBfYnCu4sVxbE+P4o9RgS5cTek7hq YlwFCSGJEOQXQHGuSFT4du6PwG878EaHlDj6kXcOLzoAd1CG5yL0iMEPBwvMJjks17Zq XgOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:references:in-reply-to:date:to:from :message-id:delivered-to; bh=sZoTbLpFt74Q/QS1F6aS135MbhU4AWMkCes+hnrH2tg=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=STGyMJkPpNl6xXIZ0dQXfExHyA4s/3yS1LgUUQFsuu+kZLPoQnQn0TuWUqgukbVu25 0XG1Q1EIiHcZdKz9NtXv2dQLSxEXSH9JcagSSnxzmyjmwT6Cp/O6cS8SVBgyyzRz3GFC N5Zw7MRKmS1nJJMgVVU1gVhf+ifnuZwvofaQWpwzKsXLNiQGx2K0fRSUAEIdEnvUAPlH V7mjLTDkAmnu2WHBQVnznAs2hEronWOds/RMHy5ThRrRASq5fLo3kX+EOK8BSrW+KjIa s4M3hQYZFE3i9XBSUaGef76NLn59gdhvNqUGu4Kdpnm+onOgApiEVAscU+AbNOP74Fgg PWkg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p9-20020a170906604900b00a272dd07ad2si3542789ejj.80.2023.12.30.13.13.48; Sat, 30 Dec 2023 13:13:48 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3971368CC40; Sat, 30 Dec 2023 23:13:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8AB8568B3B0 for ; Sat, 30 Dec 2023 23:13:39 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id 330F35428441 for ; Sat, 30 Dec 2023 22:13:39 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id A78AD5428493 for ; Sat, 30 Dec 2023 22:13:38 +0100 (CET) Message-ID: <390d655253d2b8036b3bd88b45a2262ad16cae5d.camel@haerdin.se> From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Sat, 30 Dec 2023 22:13:37 +0100 In-Reply-To: References: User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/6] Un-mark IMA APC as intra-only, only mark first packet as keyframe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qRejMnaF2Ks0 From f652daf2e9bad345c0e98ab058a5e07c3d45d13e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 26 Dec 2023 16:30:35 +0100 Subject: [PATCH 3/6] Un-mark IMA APC as intra-only, only mark first packet as keyframe Packets must be decoded in order. There is no way to seek and get a bitexact decode. --- libavcodec/codec_desc.c | 2 +- libavformat/apc.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c index 033344304c..45ef4c5091 100644 --- a/libavcodec/codec_desc.c +++ b/libavcodec/codec_desc.c @@ -2431,7 +2431,7 @@ static const AVCodecDescriptor codec_descriptors[] = { .type = AVMEDIA_TYPE_AUDIO, .name = "adpcm_ima_apc", .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA CRYO APC"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, + .props = AV_CODEC_PROP_LOSSY, }, { .id = AV_CODEC_ID_ADPCM_VIMA, diff --git a/libavformat/apc.c b/libavformat/apc.c index 7765c53088..d1891954a8 100644 --- a/libavformat/apc.c +++ b/libavformat/apc.c @@ -75,8 +75,13 @@ static int apc_read_header(AVFormatContext *s) static int apc_read_packet(AVFormatContext *s, AVPacket *pkt) { + int first = avio_tell(s->pb) == 32; if (av_get_packet(s->pb, pkt, MAX_READ_SIZE) <= 0) return AVERROR(EIO); + // each IMA APC packet depends on the one before for bitexact decode + // extradata is used to initialize the decoder + if (first) + pkt->flags |= AV_PKT_FLAG_KEY; pkt->stream_index = 0; return 0; } -- 2.39.2 From patchwork Sat Dec 30 21:13:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 45398 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp5483640pzh; Sat, 30 Dec 2023 13:14:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IFftAUtt02eEOvsmXAteJMRzCMTgkAqTe96cQ9ZJcBv5vwFzd2zoA9oxs523pVB9I5y8KwP X-Received: by 2002:a17:906:ae13:b0:a26:f957:b9c2 with SMTP id le19-20020a170906ae1300b00a26f957b9c2mr3656505ejb.0.1703970846096; Sat, 30 Dec 2023 13:14:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703970846; cv=none; d=google.com; s=arc-20160816; b=uo+zhnNegKiM459crcy1fwMklqSvb2g3UgM574+m3qEXfANrVFNnTFYY++Gk7c+Plh xYvxGtd/ytYwGJUXazQbVUwLepI6fTmrU1xdSvd2/rAWNMAV6aqNNwZNr2WNHWZPlzht psNggmcI20Y924jKSIBcxXsAeWxJ59hxzJgRcvsfUzntGD1l2MQ8iA6xfwkYkS4ZJmhQ 8ZVzPKL8k2LOO3WvntJLC0uuWwS814J6qwtypo11fz3wk5PhAwe/Ix4M7t8FOqGzNP+a V/IwPnablnN4gnYxNTB0zEfAYKhUJSBL/j6xQSQnC2V8uf3zSe892tZ/A5jO7VSyS//u CN/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:references:in-reply-to:date:to:from :message-id:delivered-to; bh=8CcPXBH0tDWaSMbBN8MYKcSla9Nyhx9FSdJiEbABdC4=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=lI2meDEIE4vXpZQxc8fV826/c1ITrY67PpoXATlce1p4woaR+FZ+VwVORSJLpai3yz d88IPWC/mDZ4UxLTDWfh8FBBv1k20W9bfGOwzdYoQzMhjdVRe9RAGIiYQfk0QeWcAsrl /bH5Ki+LbGPGb2shsXoanOmtwUhf3zK6YU8dhTOkrJ4m+hcCRj8MyH1cEHbKLD5LFRPC EMEvedNPAhDi4hW61sG9mOAsCGjxPzB0rgSykSVTyOtpddcs9PGGNr8e20ut1SNqBuBR NI68hc9hXuSi6P3Wo39TDmGGdd3pAiqXTO8ZPl+oCT9pFcFNrZjl6Y028wRleLNYBOgR FR8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id se1-20020a170906ce4100b00a27d968a6c7si247658ejb.429.2023.12.30.13.14.05; Sat, 30 Dec 2023 13:14:06 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5BAC368B3B0; Sat, 30 Dec 2023 23:14:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4C1AA68B3B0 for ; Sat, 30 Dec 2023 23:13:56 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id E9DBE5428493 for ; Sat, 30 Dec 2023 22:13:55 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id A46975428441 for ; Sat, 30 Dec 2023 22:13:55 +0100 (CET) Message-ID: <326e731192863601001f2c5904e0c378c08960f7.camel@haerdin.se> From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Sat, 30 Dec 2023 22:13:54 +0100 In-Reply-To: References: User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 4/6] lavf: Add CRYO APC muxer X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: a1GXq4r5ECe2 From 1fab30dea9528478ccbe78dc68a3933acb8115b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 26 Dec 2023 14:32:10 +0100 Subject: [PATCH 4/6] lavf: Add CRYO APC muxer --- Changelog | 1 + doc/general_contents.texi | 2 +- libavformat/Makefile | 1 + libavformat/allformats.c | 1 + libavformat/apcenc.c | 129 ++++++++++++++++++++++++++++++++++++++ libavformat/version.h | 2 +- 6 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 libavformat/apcenc.c diff --git a/Changelog b/Changelog index a638c03250..31c9e25be6 100644 --- a/Changelog +++ b/Changelog @@ -13,6 +13,7 @@ version : - IAMF raw demuxer and muxer - D3D12VA hardware accelerated H264, HEVC, VP9, AV1, MPEG-2 and VC1 decoding - tiltandshift filter +- CRYO APC muxer version 6.1: - libaribcaption decoder diff --git a/doc/general_contents.texi b/doc/general_contents.texi index ec7516dce8..df31edd060 100644 --- a/doc/general_contents.texi +++ b/doc/general_contents.texi @@ -464,7 +464,7 @@ library: @item CRC testing format @tab X @tab @item Creative Voice @tab X @tab X @tab Created for the Sound Blaster Pro. -@item CRYO APC @tab @tab X +@item CRYO APC @tab X @tab X @tab Audio format used in some games by CRYO Interactive Entertainment. @item D-Cinema audio @tab X @tab X @item Deluxe Paint Animation @tab @tab X diff --git a/libavformat/Makefile b/libavformat/Makefile index 581e378d95..f605f4ae69 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -105,6 +105,7 @@ OBJS-$(CONFIG_AMV_MUXER) += amvenc.o OBJS-$(CONFIG_ANM_DEMUXER) += anm.o OBJS-$(CONFIG_APAC_DEMUXER) += apac.o rawdec.o OBJS-$(CONFIG_APC_DEMUXER) += apc.o +OBJS-$(CONFIG_APC_MUXER) += apcenc.o OBJS-$(CONFIG_APE_DEMUXER) += ape.o apetag.o img2.o OBJS-$(CONFIG_APM_DEMUXER) += apm.o OBJS-$(CONFIG_APM_MUXER) += apm.o rawenc.o diff --git a/libavformat/allformats.c b/libavformat/allformats.c index ce6be5f04d..18a33d7448 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -60,6 +60,7 @@ extern const FFOutputFormat ff_amv_muxer; extern const AVInputFormat ff_anm_demuxer; extern const AVInputFormat ff_apac_demuxer; extern const AVInputFormat ff_apc_demuxer; +extern const FFOutputFormat ff_apc_muxer; extern const AVInputFormat ff_ape_demuxer; extern const AVInputFormat ff_apm_demuxer; extern const FFOutputFormat ff_apm_muxer; diff --git a/libavformat/apcenc.c b/libavformat/apcenc.c new file mode 100644 index 0000000000..7c7f3a1f26 --- /dev/null +++ b/libavformat/apcenc.c @@ -0,0 +1,129 @@ +/* + * CRYO APC audio format muxer + * Copyright (c) 2023 Tomas Härdin + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "avio_internal.h" +#include "internal.h" +#include "mux.h" + +#define APC_HEADER_SIZE (8*4) + +static int apc_write_header(AVFormatContext *s) +{ + AVCodecParameters *par; + AVStream *st; + + if (s->nb_streams != 1) { + av_log(s, AV_LOG_ERROR, "Must have exactly one stream\n"); + return AVERROR(EINVAL); + } + + st = s->streams[0]; + par = st->codecpar; + + if (par->ch_layout.nb_channels <= 0 || par->ch_layout.nb_channels > 2) { + av_log(s, AV_LOG_ERROR, "Must be mono or stereo\n"); + return AVERROR(EINVAL); + } + + avpriv_set_pts_info(st, 64, 1, par->sample_rate); + // delay writing the actual header until we get extradata from the encoder + return 0; +} + +static int apc_write_header_delayed(AVFormatContext *s, AVPacket *pkt) +{ + AVIOContext *pb = s->pb; + AVCodecParameters *par = s->streams[0]->codecpar; + size_t new_extradata_size = 0, extradata_size; + const uint8_t *new_extradata = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &new_extradata_size), *extradata; + + // prefer updated extradata from the encoder + if (new_extradata) { + extradata_size = new_extradata_size; + extradata = new_extradata; + } else { + extradata_size = par->extradata_size; + extradata = par->extradata; + } + + if (extradata_size != 8) { + av_log(s, AV_LOG_ERROR, "Must have exactly 8 bytes of extradata, got %zu\n", extradata_size); + return AVERROR(EINVAL); + } + + ffio_wfourcc(pb, "CRYO"); + ffio_wfourcc(pb, "_APC"); + ffio_wfourcc(pb, "1.20"); + avio_wl32(pb, 0); // number or samples. updated in apc_write_trailer() + avio_wl32(pb, par->sample_rate); + avio_write(pb, extradata, extradata_size); + avio_wl32(pb, par->ch_layout.nb_channels - 1); + + return 0; +} + +static int apc_write_packet(AVFormatContext *s, AVPacket *pkt) +{ + if (avio_tell(s->pb) == 0) { + // first packet - write header + int ret; + if ((ret = apc_write_header_delayed(s, pkt)) < 0) + return ret; + } + + avio_write(s->pb, pkt->data, pkt->size); + return 0; +} + +static int apc_write_trailer(AVFormatContext *s) +{ + int64_t file_size = avio_tell(s->pb); + + if (file_size < APC_HEADER_SIZE) { + av_log(s, AV_LOG_ERROR, "Got no packets\n"); + return AVERROR(EINVAL); + } + + // write length, if we're able to seek back + if (avio_seek(s->pb, 12, SEEK_SET) >= 0) { + int64_t data_size = file_size -= APC_HEADER_SIZE; + int channels = s->streams[0]->codecpar->ch_layout.nb_channels; + + if (data_size / channels > UINT32_MAX / 2) { + av_log(s, AV_LOG_ERROR, "File too large\n"); + return AVERROR(EINVAL); + } + + avio_wl32(s->pb, data_size * 2 / channels); + } + return 0; +} + +const FFOutputFormat ff_apc_muxer = { + .p.name = "apc", + .p.long_name = NULL_IF_CONFIG_SMALL("CRYO APC"), + .p.extensions = "apc", + .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_APC, + .write_header = apc_write_header, + .write_packet = apc_write_packet, + .write_trailer = apc_write_trailer, +}; + diff --git a/libavformat/version.h b/libavformat/version.h index de9cc8e31d..683184d5da 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -31,7 +31,7 @@ #include "version_major.h" -#define LIBAVFORMAT_VERSION_MINOR 20 +#define LIBAVFORMAT_VERSION_MINOR 21 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ -- 2.39.2 From patchwork Sat Dec 30 21:14:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 45399 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp5483729pzh; Sat, 30 Dec 2023 13:14:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IEHRruy+dFB+YjY8HWJKnsweLU8OObeqEkD81psfK0dSDOgPLjknxnvXdLTy5nsbn4EJLLT X-Received: by 2002:a17:907:ea6:b0:a26:9118:4166 with SMTP id ho38-20020a1709070ea600b00a2691184166mr4098912ejc.82.1703970863911; Sat, 30 Dec 2023 13:14:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703970863; cv=none; d=google.com; s=arc-20160816; b=YnNTNHl+4Guti4EJXyklXSL3p3Gqi3hEF9vJqF7aQ58b6ePpLGOQry5SMo6ebUhIl6 hP1UpTjJf61D8unbyVX0WBX2CfrC7YxCdSuu2Wp4lf8jlSbMo/jj4Pggzrs6ZXLq4n64 lD8OqF+lsvV/3KnQRInDO2hXAzwrlzeUeGvujEZ4mQxnTeFHElqnIevUTW/IEnwvGjEy zq0X0SEaGM1cC8WyfILpXbdh4mYB+oKXslq3KXkDGEzenVGzsL16s0M7e+ypeHbz9ryN gVHwMYXAMWWDB2v+sZi+fL/zvq4V3Zbt1kMKLGXMLqLfW/gXtjDC9YE6wtPCBD40n0vQ EhTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:references:in-reply-to:date:to:from :message-id:delivered-to; bh=GWaIhnKJWZ0OTExzUzz1T3aPeYZVB+tQtiaw8kc2t+k=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=wP++P05URW8GA1sSbXCQLylJlTvNWYpWTtuuDDCqAVEHTvXWw09jD8bGvH7MpWPOSO rp4E0zqMBRQerwiRRviyP39cb5YLuVvcM/4scVQKmZDZXAIxswjL0tSwW7owGHefNHnO 7BBEut9qj4M6B6ZAnMcVVRG4w4KEhN9hZ9z675z/RxYCuoXbNO7hXZrFyF7bG/h/JlNw d7vTYpuDyQoWZ4XmVqP0cl/59/z04qBm7kpoe9a1fyS2a1XKsx1ASMdP+t/K5SVBkDv/ giagmWwDXM4b+cw4W1BxSrwbuHTsdR/oBsCybDHTmLrvCD6GuHCyutXzEPn3PKrgOven 3l6w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gk2-20020a17090790c200b00a26e106b1absi5871411ejb.817.2023.12.30.13.14.23; Sat, 30 Dec 2023 13:14:23 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 60A1D68CCC8; Sat, 30 Dec 2023 23:14:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AE73668BCEC for ; Sat, 30 Dec 2023 23:14:14 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id 56B0554208B2 for ; Sat, 30 Dec 2023 22:14:14 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id 1980E54207EA for ; Sat, 30 Dec 2023 22:14:13 +0100 (CET) Message-ID: From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Sat, 30 Dec 2023 22:14:12 +0100 In-Reply-To: References: User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 5/6] lavc: Add ADPCM IMA CRYO APC encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /WpWijJRgV9r From 701eec2a7e742fa0fcc375a6c3784ac012100d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 26 Dec 2023 14:32:20 +0100 Subject: [PATCH 5/6] lavc: Add ADPCM IMA CRYO APC encoder No trellis quantization yet --- Changelog | 1 + doc/general_contents.texi | 2 +- libavcodec/adpcmenc.c | 33 +++++++++++++++++++++++++++++++++ libavcodec/allcodecs.c | 1 + libavcodec/version.h | 2 +- tests/fate/acodec.mak | 2 ++ tests/ref/acodec/adpcm-ima_apc | 4 ++++ 7 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 tests/ref/acodec/adpcm-ima_apc diff --git a/Changelog b/Changelog index 31c9e25be6..586ccd1a9c 100644 --- a/Changelog +++ b/Changelog @@ -14,6 +14,7 @@ version : - D3D12VA hardware accelerated H264, HEVC, VP9, AV1, MPEG-2 and VC1 decoding - tiltandshift filter - CRYO APC muxer +- ADPCM IMA APC encoder version 6.1: - libaribcaption decoder diff --git a/doc/general_contents.texi b/doc/general_contents.texi index df31edd060..9f450dc794 100644 --- a/doc/general_contents.texi +++ b/doc/general_contents.texi @@ -1188,7 +1188,7 @@ following image formats are supported: @item ADPCM IMA Acorn Replay @tab @tab X @item ADPCM IMA AMV @tab X @tab X @tab Used in AMV files -@item ADPCM IMA APC @tab @tab X +@item ADPCM IMA APC @tab X @tab X @tab Codec used in games by Cryo Interactive @item ADPCM IMA Cunning Developments @tab @tab X @item ADPCM IMA Electronic Arts EACS @tab @tab X diff --git a/libavcodec/adpcmenc.c b/libavcodec/adpcmenc.c index 7f18fc2daf..7abd71541d 100644 --- a/libavcodec/adpcmenc.c +++ b/libavcodec/adpcmenc.c @@ -74,6 +74,7 @@ typedef struct ADPCMEncodeContext { TrellisNode *node_buf; TrellisNode **nodep_buf; uint8_t *trellis_hash; + int extradata_updated; } ADPCMEncodeContext; #define FREEZE_INTERVAL 128 @@ -157,6 +158,15 @@ static av_cold int adpcm_encode_init(AVCodecContext *avctx) bytestream_put_le16(&extradata, ff_adpcm_AdaptCoeff2[i] * 4); } ) /* End of CASE */ + CASE(ADPCM_IMA_APC, + if (avctx->trellis) { + av_log(avctx, AV_LOG_ERROR, "trellis encoding not implemented for CRYO APC\n"); + return AVERROR_PATCHWELCOME; + } + //extradata will be output in adpcm_encode_frame() + avctx->frame_size = s->block_size * 2 / channels; + avctx->block_align = s->block_size; + ) /* End of CASE */ CASE(ADPCM_YAMAHA, avctx->frame_size = s->block_size * 2 / channels; avctx->block_align = s->block_size; @@ -622,6 +632,28 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, dst = avpkt->data; switch(avctx->codec->id) { + CASE(ADPCM_IMA_APC, + //initialize predictors using initial samples + if (!c->extradata_updated) { + uint8_t *side_data = av_packet_new_side_data( + avpkt, AV_PKT_DATA_NEW_EXTRADATA, 8); + + if (!side_data) { + return AVERROR(ENOMEM); + } + + for (int ch = 0; ch < channels; ch++) { + c->status[ch].prev_sample = samples[ch]; + bytestream_put_le32(&side_data, c->status[ch].prev_sample); + } + c->extradata_updated = 1; + } + for (int i = 0; i < frame->nb_samples*channels/2; i++) { + uint8_t l = adpcm_ima_compress_sample(&c->status[0], samples[2*i+0]); + uint8_t r = adpcm_ima_compress_sample(&c->status[st], samples[2*i+1]); + *dst++ = (l<<4) | r; + } + ) /* End of CASE */ CASE(ADPCM_IMA_WAV, int blocks = (frame->nb_samples - 1) / 8; @@ -1027,6 +1059,7 @@ ADPCM_ENCODER(ADPCM_IMA_QT, adpcm_ima_qt, sample_fmts_p, 0, 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_APC, adpcm_ima_apc, sample_fmts, 0, "ADPCM IMA CRYO APC") 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 b0f004e15c..34662a88f3 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -669,6 +669,7 @@ extern const FFCodec ff_adpcm_ima_amv_encoder; extern const FFCodec ff_adpcm_ima_alp_decoder; extern const FFCodec ff_adpcm_ima_alp_encoder; extern const FFCodec ff_adpcm_ima_apc_decoder; +extern const FFCodec ff_adpcm_ima_apc_encoder; extern const FFCodec ff_adpcm_ima_apm_decoder; extern const FFCodec ff_adpcm_ima_apm_encoder; extern const FFCodec ff_adpcm_ima_cunning_decoder; diff --git a/libavcodec/version.h b/libavcodec/version.h index 34b059a8a9..376388c5bb 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 36 +#define LIBAVCODEC_VERSION_MINOR 37 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ diff --git a/tests/fate/acodec.mak b/tests/fate/acodec.mak index 7b09e3bd63..e7e3ae5ab8 100644 --- a/tests/fate/acodec.mak +++ b/tests/fate/acodec.mak @@ -48,6 +48,7 @@ fate-acodec-pcm-f%be: FMT = au FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_ADX, ADX) += adx FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_ARGO, ARGO_ASF) += argo +FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_APC, APC) += ima_apc FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_APM, APM) += ima_apm FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_ALP, ALP) += ima_alp FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_IMA_QT, AIFF) += ima_qt @@ -69,6 +70,7 @@ fate-acodec-adpcm-%: CODEC = adpcm_$(@:fate-acodec-adpcm-%=%) fate-acodec-adpcm-adx: FMT = adx fate-acodec-adpcm-argo: FMT = argo_asf +fate-acodec-adpcm-ima_apc: FMT = apc fate-acodec-adpcm-ima_apm: FMT = apm fate-acodec-adpcm-ima_qt: FMT = aiff fate-acodec-adpcm-ima_ssi: FMT = kvag diff --git a/tests/ref/acodec/adpcm-ima_apc b/tests/ref/acodec/adpcm-ima_apc new file mode 100644 index 0000000000..f168734c78 --- /dev/null +++ b/tests/ref/acodec/adpcm-ima_apc @@ -0,0 +1,4 @@ +45aca515c679bb0c315df766432d5630 *tests/data/fate/acodec-adpcm-ima_apc.apc +265248 tests/data/fate/acodec-adpcm-ima_apc.apc +03fc41cf61b7a160359147cd6363562a *tests/data/fate/acodec-adpcm-ima_apc.out.wav +stddev: 904.04 PSNR: 37.21 MAXDIFF:34026 bytes: 1058400/ 1060864 -- 2.39.2 From patchwork Sat Dec 30 21:14:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 45400 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp5483784pzh; Sat, 30 Dec 2023 13:14:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IG0bVnNSCsZ+KASeB5PSXhakbg7hOKZM+Mb4rL7uHkHer0QBqQ0xgOSIIUCBQ3Mnk81YOXA X-Received: by 2002:a2e:a26f:0:b0:2cc:e6e7:f2bc with SMTP id k15-20020a2ea26f000000b002cce6e7f2bcmr919524ljm.183.1703970877294; Sat, 30 Dec 2023 13:14:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703970877; cv=none; d=google.com; s=arc-20160816; b=jYQEgNi0d/pHC6synKhd7FTj/+/kDPJ7xWgV3/vZJskH+qaRLoTltAF4pRbzMzmTUI EodDz3MDv5eLu7sa/WhrXb1WRBzfqbzAU+q94dpFl2Odti9QuTDg889p2W8wALMi5lyT JM4ME7r1PWyd4WyB/km0FP1A1hJHOiZlbpgxziOhJAQBj23e2Nt4Rm2nFyqQU7RnM/8g aIO6sKHCltlxCpHDWDYRlhlO4DXXxxQwPsFnea376gH4ofCknMwM6oID0PA9RyaVfiz0 p4imM1Mn8OMh5NSofPXf1qgfwa0NnTDQ0PweDHuBRQQpxqPkPQp3RAspZUjJscRs24IZ 4/Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:references:in-reply-to:date:to:from :message-id:delivered-to; bh=KhDOo6vM2Tx4zLRHltHHDy3cOU1+z+veXsm9q2vm1FY=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=m/CfS1ry7BxXB1+pp9g3xOb53sRMG1x0CzQCZi14vhdYwTq/BF7ZDfIoPJnLRE6w8b 2h43eYjw3M90ihyfNdsXawsW/Ap6ZdmDcdwZOHNM6q7zQ4W8hiI7nYVWtucMde0ZYWZQ udKyUl9hl7R91rCUaPNSCAVtHTvnOdxJiN8TteGjGbmjApNzv4dSzgwkQzNz8/lcghw5 n5ijfpxyEVetsq4jvIWEudbCbV99pgaOzRJH06+UFoIywYsrUeKzQ39A/jttlA4jm9ho qI4JIWLqDpCScVun9FXbM95muxGoCx2zRROIZThBEi48cH2epKZZ0epg56SKEaLQmL3T szCQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id bl7-20020a056402210700b0055400f1f188si9193686edb.41.2023.12.30.13.14.36; Sat, 30 Dec 2023 13:14:37 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 68C4D68CCE5; Sat, 30 Dec 2023 23:14:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 138E868BD5A for ; Sat, 30 Dec 2023 23:14:28 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id AFB1C5421C32 for ; Sat, 30 Dec 2023 22:14:27 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id 69F3C54208B2 for ; Sat, 30 Dec 2023 22:14:27 +0100 (CET) Message-ID: <0767d5aea4827c1b3863e1b3cffb2186da32c322.camel@haerdin.se> From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Sat, 30 Dec 2023 22:14:26 +0100 In-Reply-To: References: User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 6/6] Add myself as APC maintainer X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ydz+hr9pLnjW From 65f4215a519e457d6a3d6c943d14ebd739083eed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 26 Dec 2023 16:45:33 +0100 Subject: [PATCH 6/6] Add myself as APC maintainer --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 9c4683db19..fa98e043c5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -391,6 +391,7 @@ Muxers/Demuxers: aiffenc.c Baptiste Coudurier, Matthieu Bouron alp.c Zane van Iperen amvenc.c Zane van Iperen + apc* Tomas Härdin apm.c Zane van Iperen apngdec.c Benoit Fouet argo_asf.c Zane van Iperen -- 2.39.2