From: PRoslyy via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: ffmpeg-devel@ffmpeg.org
Cc: PRoslyy <code@ffmpeg.org>
Subject: [FFmpeg-devel] [PR] HCA option overhaul + docs & test (PR #21573)
Date: Sun, 25 Jan 2026 00:23:27 -0000
Message-ID: <176930060881.25.10859334153058513405@4457048688e7> (raw)
PR #21573 opened by PRoslyy
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21573
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21573.patch
Adds HCA options to avcodec/hcadec in order to enable decrypting HCA streams in USM files and schedules the now redundant avformat/hca options for removal. This is to avoid duplicating the options to avformat/usmdec (and potentially avformat/aaxdec in the future since those also can contain HCA streams).
Also adds documentation for the new options and a fate test for encrypted HCA.
For the FATE test sample file, please use [https://streams.videolan.org/ffmpeg/incoming/encrypted-hca_lowkey-3201512.hca](https://streams.videolan.org/ffmpeg/incoming/encrypted-hca_lowkey-3201512.hca) named as `hca/hca-encrypted.hca`.
>From 7f1fc0ed3e149548ece1509db80b58574a86916f Mon Sep 17 00:00:00 2001
From: Pavel Roslyy <roslypav@gmail.com>
Date: Sat, 24 Jan 2026 13:52:45 -0800
Subject: [PATCH 1/5] avcodec/hcadec: add hca_key and hca_subkey options
The options in avformat/hca do not work for encrypted HCA streams
in usm files. Rather than duplicating the options into avformat/usmdec
it makes more sense to move the options to the decoder.
Signed-off-by: Pavel Roslyy <roslypav@gmail.com>
---
libavcodec/hcadec.c | 52 +++++++++++++++++++++++++++++++++++++++-----
libavcodec/version.h | 2 +-
2 files changed, 48 insertions(+), 6 deletions(-)
diff --git a/libavcodec/hcadec.c b/libavcodec/hcadec.c
index 7780372cf3..b4ea555d84 100644
--- a/libavcodec/hcadec.c
+++ b/libavcodec/hcadec.c
@@ -16,6 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "libavutil/opt.h"
#include "libavutil/crc.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mem.h"
@@ -47,14 +48,13 @@ typedef struct ChannelContext {
} ChannelContext;
typedef struct HCAContext {
+ AVClass *class;
const AVCRC *crc_table;
ChannelContext ch[MAX_CHANNELS];
uint8_t ath[128];
uint8_t cipher[256];
- uint64_t key;
- uint16_t subkey;
int ath_type;
int ciph_type;
@@ -70,6 +70,10 @@ typedef struct HCAContext {
av_tx_fn tx_fn;
AVTXContext *tx_ctx;
AVFloatDSPContext *fdsp;
+ uint64_t key;
+ uint16_t subkey;
+ uint8_t *keyopt;
+ int keyopt_len;
} HCAContext;
static void cipher_init56_create_table(uint8_t *r, uint8_t key)
@@ -202,7 +206,8 @@ static av_cold void init_flush(AVCodecContext *avctx)
{
HCAContext *c = avctx->priv_data;
- memset(c, 0, offsetof(HCAContext, tx_fn));
+ // Avoid destroying AVClass*
+ memset(&c->crc_table, 0, offsetof(HCAContext, tx_fn) - offsetof(HCAContext, crc_table));
}
static int init_hca(AVCodecContext *avctx, const uint8_t *extradata,
@@ -224,7 +229,11 @@ static int init_hca(AVCodecContext *avctx, const uint8_t *extradata,
bytestream2_skipu(gb, 4);
version = bytestream2_get_be16(gb);
- bytestream2_skipu(gb, 2);
+ /* avformat/usmdec does not extend extradata by 10 bytes which can cause
+ * key and/or subkey to be assigned garbage when dealing with usm.
+ * Save chunk size to compare it to extradata_size later to know where we came from
+ */
+ int chunk_size = bytestream2_get_be16(gb) & HCA_MASK;
c->ath_type = version >= 0x200 ? 0 : 1;
@@ -285,12 +294,25 @@ static int init_hca(AVCodecContext *avctx, const uint8_t *extradata,
}
}
- if (bytestream2_get_bytes_left(gb) >= 10) {
+ if (bytestream2_get_bytes_left(gb) >= 10 && extradata_size > chunk_size) {
bytestream2_skip(gb, bytestream2_get_bytes_left(gb) - 10);
c->key = bytestream2_get_be64u(gb);
c->subkey = bytestream2_get_be16u(gb);
}
+ if (c->keyopt_len > 8) {
+ av_log(c, AV_LOG_ERROR, "hca_key value must be at most 8 bytes!\n");
+ return AVERROR(EINVAL);
+ }
+
+ if (c->keyopt_len) {
+ c->key = 0;
+ // Convert array of bytes to uint64_t
+ for (int i = 0; i < c->keyopt_len; i++) {
+ c->key |= (uint64_t) c->keyopt[c->keyopt_len - 1 - i] << 8*i;
+ }
+ }
+
cipher_init(c->cipher, c->ciph_type, c->key, c->subkey);
ret = ath_init(c->ath, c->ath_type, avctx->sample_rate);
@@ -623,11 +645,31 @@ static av_cold void decode_flush(AVCodecContext *avctx)
memset(c->ch[ch].imdct_prev, 0, sizeof(c->ch[ch].imdct_prev));
}
+#define OFFSET(x) offsetof(HCAContext, x)
+#define FLAGS AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM
+static const AVOption hca_options[] = {
+ { "hca_key",
+ "Key used for handling CRI HCA streams (hex)", OFFSET(keyopt),
+ AV_OPT_TYPE_BINARY, .flags = FLAGS, },
+ { "hca_subkey",
+ "Subkey used for handling CRI HCA streams", OFFSET(subkey),
+ AV_OPT_TYPE_INT, {.i64=0}, .min = 0, .max = UINT16_MAX, .flags = FLAGS },
+ { NULL },
+};
+
+static const AVClass hca_class = {
+ .class_name = "hca",
+ .item_name = av_default_item_name,
+ .option = hca_options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
const FFCodec ff_hca_decoder = {
.p.name = "hca",
CODEC_LONG_NAME("CRI HCA"),
.p.type = AVMEDIA_TYPE_AUDIO,
.p.id = AV_CODEC_ID_HCA,
+ .p.priv_class = &hca_class,
.priv_data_size = sizeof(HCAContext),
.init = decode_init,
FF_CODEC_DECODE_CB(decode_frame),
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 9d910cf848..21443642a3 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -30,7 +30,7 @@
#include "version_major.h"
#define LIBAVCODEC_VERSION_MINOR 23
-#define LIBAVCODEC_VERSION_MICRO 102
+#define LIBAVCODEC_VERSION_MICRO 103
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
--
2.52.0
>From 2d7c017d1d4e171fae003d56933681f827492c71 Mon Sep 17 00:00:00 2001
From: Pavel Roslyy <roslypav@gmail.com>
Date: Sat, 24 Jan 2026 14:19:38 -0800
Subject: [PATCH 2/5] avformat/usmdec: setup extradata for HCA streams
Enables HCA stream decryption.
Signed-off-by: Pavel Roslyy <roslypav@gmail.com>
---
libavformat/usmdec.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavformat/usmdec.c b/libavformat/usmdec.c
index fd28e935ce..f97d435de0 100644
--- a/libavformat/usmdec.c
+++ b/libavformat/usmdec.c
@@ -323,7 +323,7 @@ static int64_t parse_chunk(AVFormatContext *s, AVIOContext *pb,
avpriv_set_pts_info(st, 64, ch->rate.den, ch->rate.num);
ffstream(st)->need_parsing = AVSTREAM_PARSE_TIMESTAMPS;
- get_extradata = ch->codec_id == AV_CODEC_ID_ADPCM_ADX;
+ get_extradata = ch->type == AVMEDIA_TYPE_AUDIO;
ch->extradata_pos = avio_tell(pb);
}
@@ -336,7 +336,7 @@ static int64_t parse_chunk(AVFormatContext *s, AVIOContext *pb,
if ((ret = ff_get_extradata(s, st->codecpar, pb, pkt_size)) < 0)
return ret;
} else {
- if (ret == ch->extradata_pos && ch->codec_id == AV_CODEC_ID_ADPCM_ADX) {
+ if (ret == ch->extradata_pos && ch->type == AVMEDIA_TYPE_AUDIO) {
avio_skip(pb, pkt_size);
ret = 0;
} else {
--
2.52.0
>From 2225f4ddb2becd62dad2121668970bbc409cd3ca Mon Sep 17 00:00:00 2001
From: Pavel Roslyy <roslypav@gmail.com>
Date: Sat, 24 Jan 2026 15:31:31 -0800
Subject: [PATCH 3/5] doc/decoders: add HCA decoder options
Signed-off-by: Pavel Roslyy <roslypav@gmail.com>
---
doc/decoders.texi | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/doc/decoders.texi b/doc/decoders.texi
index 1db297f42f..98ab3794ab 100644
--- a/doc/decoders.texi
+++ b/doc/decoders.texi
@@ -307,6 +307,31 @@ This decoder generates wave patterns according to predefined sequences. Its
use is purely internal and the format of the data it accepts is not publicly
documented.
+@section hca
+
+CRIWARE High Compression Audio decoder.
+
+This codec is used by various games with CRIWARE middleware.
+
+@subsection Options
+
+@table @option
+
+@item hca_key @var{hexadecimal string}
+16-byte decryption key, in hex.
+
+@item hca_subkey @var{int}
+Subkey used to permute the decryption key. Range is 0 to 65535.
+
+@end table
+
+@subsection Examples
+
+Convert usm video with encrypted hca audio stream to mp4:
+@example
+ffmpeg -hca_key 89ABCDEF -i input.usm output.mp4
+@end example
+
@section libcelt
libcelt decoder wrapper.
--
2.52.0
>From 61e66b89683f157e20ff5faaed879ea597a3736b Mon Sep 17 00:00:00 2001
From: Pavel Roslyy <roslypav@gmail.com>
Date: Sat, 24 Jan 2026 15:33:20 -0800
Subject: [PATCH 4/5] avformat/hca: Schedule hca key options for removal
Replaced by the options in avcodec/hcadec.
Signed-off-by: Pavel Roslyy <roslypav@gmail.com>
---
libavcodec/hcadec.c | 7 +++++++
libavformat/hca.c | 27 ++++++++++++++++++++++++---
libavformat/version_major.h | 2 ++
3 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/libavcodec/hcadec.c b/libavcodec/hcadec.c
index b4ea555d84..02d1f8df73 100644
--- a/libavcodec/hcadec.c
+++ b/libavcodec/hcadec.c
@@ -22,6 +22,7 @@
#include "libavutil/mem.h"
#include "libavutil/mem_internal.h"
#include "libavutil/tx.h"
+#include "libavformat/version_major.h"
#include "avcodec.h"
#include "bytestream.h"
@@ -229,11 +230,15 @@ static int init_hca(AVCodecContext *avctx, const uint8_t *extradata,
bytestream2_skipu(gb, 4);
version = bytestream2_get_be16(gb);
+#if FF_API_HCA_OPTS
/* avformat/usmdec does not extend extradata by 10 bytes which can cause
* key and/or subkey to be assigned garbage when dealing with usm.
* Save chunk size to compare it to extradata_size later to know where we came from
*/
int chunk_size = bytestream2_get_be16(gb) & HCA_MASK;
+#else
+ bytestream2_skipu(gb, 2);
+#endif
c->ath_type = version >= 0x200 ? 0 : 1;
@@ -294,11 +299,13 @@ static int init_hca(AVCodecContext *avctx, const uint8_t *extradata,
}
}
+#if FF_API_HCA_OPTS
if (bytestream2_get_bytes_left(gb) >= 10 && extradata_size > chunk_size) {
bytestream2_skip(gb, bytestream2_get_bytes_left(gb) - 10);
c->key = bytestream2_get_be64u(gb);
c->subkey = bytestream2_get_be16u(gb);
}
+#endif
if (c->keyopt_len > 8) {
av_log(c, AV_LOG_ERROR, "hca_key value must be at most 8 bytes!\n");
diff --git a/libavformat/hca.c b/libavformat/hca.c
index e24a21e081..a0b05ad820 100644
--- a/libavformat/hca.c
+++ b/libavformat/hca.c
@@ -27,15 +27,18 @@
#include "avio_internal.h"
#include "demux.h"
#include "internal.h"
+#include "version_major.h"
#define HCA_MASK 0x7f7f7f7f
+#if FF_API_HCA_OPTS
typedef struct HCADemuxContext {
AVClass *class;
int64_t keyl;
int64_t keyh;
int subkey;
} HCADemuxContext;
+#endif
static int hca_probe(const AVProbeData *p)
{
@@ -50,7 +53,9 @@ static int hca_probe(const AVProbeData *p)
static int hca_read_header(AVFormatContext *s)
{
+#if FF_API_HCA_OPTS
HCADemuxContext *hca = s->priv_data;
+#endif
AVCodecParameters *par;
GetByteContext gb;
AVIOContext *pb = s->pb;
@@ -73,19 +78,29 @@ static int hca_read_header(AVFormatContext *s)
return AVERROR(ENOMEM);
par = st->codecpar;
+#if FF_API_HCA_OPTS
ret = ff_alloc_extradata(par, data_offset + 10);
+#else
+ ret = ff_alloc_extradata(par, data_offset);
+#endif
if (ret < 0)
return ret;
+#if FF_API_HCA_OPTS
ret = ffio_read_size(pb, par->extradata + 8, par->extradata_size - 8 - 10);
+#else
+ ret = ffio_read_size(pb, par->extradata + 8, par->extradata_size - 8);
+#endif
if (ret < 0)
return AVERROR_INVALIDDATA;
AV_WL32(par->extradata, MKTAG('H', 'C', 'A', 0));
AV_WB16(par->extradata + 4, version);
AV_WB16(par->extradata + 6, data_offset);
+#if FF_API_HCA_OPTS
AV_WB32(par->extradata + par->extradata_size - 10, hca->keyh);
AV_WB32(par->extradata + par->extradata_size - 6, hca->keyl);
AV_WB16(par->extradata + par->extradata_size - 2, hca->subkey);
+#endif
bytestream2_init(&gb, par->extradata + 8, par->extradata_size - 8);
@@ -129,17 +144,18 @@ static int hca_read_packet(AVFormatContext *s, AVPacket *pkt)
return ret;
}
+#if FF_API_HCA_OPTS
#define OFFSET(x) offsetof(HCADemuxContext, x)
static const AVOption hca_options[] = {
{ "hca_lowkey",
"Low key used for handling CRI HCA files", OFFSET(keyl),
- AV_OPT_TYPE_INT64, {.i64=0}, .min = 0, .max = UINT32_MAX, .flags = AV_OPT_FLAG_DECODING_PARAM, },
+ AV_OPT_TYPE_INT64, {.i64=0}, .min = 0, .max = UINT32_MAX, .flags = AV_OPT_FLAG_DECODING_PARAM|AV_OPT_FLAG_DEPRECATED, },
{ "hca_highkey",
"High key used for handling CRI HCA files", OFFSET(keyh),
- AV_OPT_TYPE_INT64, {.i64=0}, .min = 0, .max = UINT32_MAX, .flags = AV_OPT_FLAG_DECODING_PARAM, },
+ AV_OPT_TYPE_INT64, {.i64=0}, .min = 0, .max = UINT32_MAX, .flags = AV_OPT_FLAG_DECODING_PARAM|AV_OPT_FLAG_DEPRECATED, },
{ "hca_subkey",
"Subkey used for handling CRI HCA files", OFFSET(subkey),
- AV_OPT_TYPE_INT, {.i64=0}, .min = 0, .max = UINT16_MAX, .flags = AV_OPT_FLAG_DECODING_PARAM },
+ AV_OPT_TYPE_INT, {.i64=0}, .min = 0, .max = UINT16_MAX, .flags = AV_OPT_FLAG_DECODING_PARAM|AV_OPT_FLAG_DEPRECATED },
{ NULL },
};
@@ -149,14 +165,19 @@ static const AVClass hca_class = {
.option = hca_options,
.version = LIBAVUTIL_VERSION_INT,
};
+#endif
const FFInputFormat ff_hca_demuxer = {
.p.name = "hca",
.p.long_name = NULL_IF_CONFIG_SMALL("CRI HCA"),
+#if FF_API_HCA_OPTS
.p.priv_class = &hca_class,
+#endif
.p.extensions = "hca",
.p.flags = AVFMT_GENERIC_INDEX,
+#if FF_API_HCA_OPTS
.priv_data_size = sizeof(HCADemuxContext),
+#endif
.read_probe = hca_probe,
.read_header = hca_read_header,
.read_packet = hca_read_packet,
diff --git a/libavformat/version_major.h b/libavformat/version_major.h
index c2f6e1616b..53661732d1 100644
--- a/libavformat/version_major.h
+++ b/libavformat/version_major.h
@@ -47,6 +47,8 @@
#define FF_API_NO_DEFAULT_TLS_VERIFY (LIBAVFORMAT_VERSION_MAJOR < 63)
+#define FF_API_HCA_OPTS (LIBAVFORMAT_VERSION_MAJOR < 63)
+
#define FF_API_R_FRAME_RATE 1
#endif /* AVFORMAT_VERSION_MAJOR_H */
--
2.52.0
>From 88ddae5ff543fe402090045f80b3a9d887591e10 Mon Sep 17 00:00:00 2001
From: Pavel Roslyy <roslypav@gmail.com>
Date: Sat, 24 Jan 2026 15:43:13 -0800
Subject: [PATCH 5/5] tests/fate/audio: add encrypted hca test
Signed-off-by: Pavel Roslyy <roslypav@gmail.com>
---
tests/fate/audio.mak | 3 +
tests/ref/fate/hca-encrypted | 225 +++++++++++++++++++++++++++++++++++
2 files changed, 228 insertions(+)
create mode 100644 tests/ref/fate/hca-encrypted
diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak
index c21578947a..c000319968 100644
--- a/tests/fate/audio.mak
+++ b/tests/fate/audio.mak
@@ -48,6 +48,9 @@ fate-g728: REF = $(SAMPLES)/g728/OUTA3.BIN
fate-g728: CMP = oneoff
fate-g728: FUZZ = 5
+FATE_SAMPLES_AUDIO-$(call DEMDEC, HCA, HCA, ARESAMPLE_FILTER) += fate-hca-encrypted
+fate-hca-encrypted: CMD = framecrc -hca_key 30D9E8 -i $(TARGET_SAMPLES)/hca/hca-encrypted.hca -f s16le -af aresample
+
FATE_SAMPLES_AUDIO-$(call PCM, AVI, IMC, ARESAMPLE_FILTER) += fate-imc
fate-imc: CMD = pcm -i $(TARGET_SAMPLES)/imc/imc.avi
fate-imc: CMP = oneoff
diff --git a/tests/ref/fate/hca-encrypted b/tests/ref/fate/hca-encrypted
new file mode 100644
index 0000000000..ef74f9843f
--- /dev/null
+++ b/tests/ref/fate/hca-encrypted
@@ -0,0 +1,225 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: pcm_s16le
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0, 0, 0, 1024, 4096, 0x8d8ae154
+0, 1024, 1024, 1024, 4096, 0xffcf652c
+0, 2048, 2048, 1024, 4096, 0x6793d8f4
+0, 3072, 3072, 1024, 4096, 0xdab77043
+0, 4096, 4096, 1024, 4096, 0x1195c256
+0, 5120, 5120, 1024, 4096, 0x4e94a236
+0, 6144, 6144, 1024, 4096, 0x2425d6de
+0, 7168, 7168, 1024, 4096, 0xf869f5cd
+0, 8192, 8192, 1024, 4096, 0x9d4bef1d
+0, 9216, 9216, 1024, 4096, 0xbb4ae2c8
+0, 10240, 10240, 1024, 4096, 0x95500ead
+0, 11264, 11264, 1024, 4096, 0x94220933
+0, 12288, 12288, 1024, 4096, 0xa2a6f9c2
+0, 13312, 13312, 1024, 4096, 0x81cce378
+0, 14336, 14336, 1024, 4096, 0x243f0a9f
+0, 15360, 15360, 1024, 4096, 0xa02df83e
+0, 16384, 16384, 1024, 4096, 0x8b29063b
+0, 17408, 17408, 1024, 4096, 0xb76a0a5a
+0, 18432, 18432, 1024, 4096, 0x60cfe307
+0, 19456, 19456, 1024, 4096, 0x22a70809
+0, 20480, 20480, 1024, 4096, 0x22a4ea69
+0, 21504, 21504, 1024, 4096, 0xc10b12a1
+0, 22528, 22528, 1024, 4096, 0xecaeedc6
+0, 23552, 23552, 1024, 4096, 0x4c2e2cb4
+0, 24576, 24576, 1024, 4096, 0xa204b772
+0, 25600, 25600, 1024, 4096, 0x450104a5
+0, 26624, 26624, 1024, 4096, 0x266f365c
+0, 27648, 27648, 1024, 4096, 0x275a8dd5
+0, 28672, 28672, 1024, 4096, 0xdecb0a07
+0, 29696, 29696, 1024, 4096, 0x940f6372
+0, 30720, 30720, 1024, 4096, 0xe0e3c0c9
+0, 31744, 31744, 1024, 4096, 0x14091efa
+0, 32768, 32768, 1024, 4096, 0xfb64e0ba
+0, 33792, 33792, 1024, 4096, 0x4a2ff162
+0, 34816, 34816, 1024, 4096, 0x74aa0cf6
+0, 35840, 35840, 1024, 4096, 0x3b5bd5b2
+0, 36864, 36864, 1024, 4096, 0xdc860c38
+0, 37888, 37888, 1024, 4096, 0x4e0c7785
+0, 38912, 38912, 1024, 4096, 0x8dc02fa8
+0, 39936, 39936, 1024, 4096, 0x65a00d8f
+0, 40960, 40960, 1024, 4096, 0xaa68bd4d
+0, 41984, 41984, 1024, 4096, 0x2b111ac3
+0, 43008, 43008, 1024, 4096, 0x32e93da7
+0, 44032, 44032, 1024, 4096, 0x688518fe
+0, 45056, 45056, 1024, 4096, 0x02b1df7a
+0, 46080, 46080, 1024, 4096, 0xdb729f04
+0, 47104, 47104, 1024, 4096, 0x4b4b325f
+0, 48128, 48128, 1024, 4096, 0xe18b21ed
+0, 49152, 49152, 1024, 4096, 0x908b1f34
+0, 50176, 50176, 1024, 4096, 0x61a3ab7a
+0, 51200, 51200, 1024, 4096, 0xdbfc0422
+0, 52224, 52224, 1024, 4096, 0xb8bcea1b
+0, 53248, 53248, 1024, 4096, 0xa5e6f835
+0, 54272, 54272, 1024, 4096, 0xe835eca2
+0, 55296, 55296, 1024, 4096, 0xf2f619ed
+0, 56320, 56320, 1024, 4096, 0xd5002156
+0, 57344, 57344, 1024, 4096, 0xac84f317
+0, 58368, 58368, 1024, 4096, 0xebeee481
+0, 59392, 59392, 1024, 4096, 0x17310b5e
+0, 60416, 60416, 1024, 4096, 0xd991cffd
+0, 61440, 61440, 1024, 4096, 0xdc331f4f
+0, 62464, 62464, 1024, 4096, 0xf0b4dd46
+0, 63488, 63488, 1024, 4096, 0x3308daa8
+0, 64512, 64512, 1024, 4096, 0x471f2da9
+0, 65536, 65536, 1024, 4096, 0xb81f0c4f
+0, 66560, 66560, 1024, 4096, 0x94ad1639
+0, 67584, 67584, 1024, 4096, 0xa5c7db9e
+0, 68608, 68608, 1024, 4096, 0x849ff7e6
+0, 69632, 69632, 1024, 4096, 0x3340008e
+0, 70656, 70656, 1024, 4096, 0xa5e6162a
+0, 71680, 71680, 1024, 4096, 0x0119eada
+0, 72704, 72704, 1024, 4096, 0x6d22fd4d
+0, 73728, 73728, 1024, 4096, 0x35242749
+0, 74752, 74752, 1024, 4096, 0xc00ccdaa
+0, 75776, 75776, 1024, 4096, 0x54ab0e9e
+0, 76800, 76800, 1024, 4096, 0xc757eb39
+0, 77824, 77824, 1024, 4096, 0x478bd745
+0, 78848, 78848, 1024, 4096, 0x90450ac3
+0, 79872, 79872, 1024, 4096, 0x4ceee70d
+0, 80896, 80896, 1024, 4096, 0x255ededa
+0, 81920, 81920, 1024, 4096, 0x56e72fe5
+0, 82944, 82944, 1024, 4096, 0x3fa0fa21
+0, 83968, 83968, 1024, 4096, 0xf39fe182
+0, 84992, 84992, 1024, 4096, 0x2d1ed8b9
+0, 86016, 86016, 1024, 4096, 0xbce00fee
+0, 87040, 87040, 1024, 4096, 0xe90fd7fd
+0, 88064, 88064, 1024, 4096, 0xcd5fef10
+0, 89088, 89088, 1024, 4096, 0xb900e21e
+0, 90112, 90112, 1024, 4096, 0xb52be8b9
+0, 91136, 91136, 1024, 4096, 0x60800bfb
+0, 92160, 92160, 1024, 4096, 0x8bcc0a06
+0, 93184, 93184, 1024, 4096, 0x7197e002
+0, 94208, 94208, 1024, 4096, 0x5502f429
+0, 95232, 95232, 1024, 4096, 0x48ec08aa
+0, 96256, 96256, 1024, 4096, 0x02af1792
+0, 97280, 97280, 1024, 4096, 0xbf22ea59
+0, 98304, 98304, 1024, 4096, 0x37a9f1af
+0, 99328, 99328, 1024, 4096, 0x81682095
+0, 100352, 100352, 1024, 4096, 0xf83208da
+0, 101376, 101376, 1024, 4096, 0x23ded08e
+0, 102400, 102400, 1024, 4096, 0xfb79d9fb
+0, 103424, 103424, 1024, 4096, 0xecd2021b
+0, 104448, 104448, 1024, 4096, 0x8dedea90
+0, 105472, 105472, 1024, 4096, 0x9d820ad6
+0, 106496, 106496, 1024, 4096, 0x008bcc8a
+0, 107520, 107520, 1024, 4096, 0x6628e42a
+0, 108544, 108544, 1024, 4096, 0x791fe00e
+0, 109568, 109568, 1024, 4096, 0x00d90222
+0, 110592, 110592, 1024, 4096, 0x8067d506
+0, 111616, 111616, 1024, 4096, 0x212e07e8
+0, 112640, 112640, 1024, 4096, 0xbbdb0a13
+0, 113664, 113664, 1024, 4096, 0x01f8ea84
+0, 114688, 114688, 1024, 4096, 0x1e08e77a
+0, 115712, 115712, 1024, 4096, 0x4456f6a5
+0, 116736, 116736, 1024, 4096, 0x5292ea75
+0, 117760, 117760, 1024, 4096, 0xb388355b
+0, 118784, 118784, 1024, 4096, 0x7946f14e
+0, 119808, 119808, 1024, 4096, 0x16e7daf3
+0, 120832, 120832, 1024, 4096, 0xe357d474
+0, 121856, 121856, 1024, 4096, 0x1928d3d0
+0, 122880, 122880, 1024, 4096, 0xb0260d75
+0, 123904, 123904, 1024, 4096, 0xf805e522
+0, 124928, 124928, 1024, 4096, 0x11d4f806
+0, 125952, 125952, 1024, 4096, 0xa68500eb
+0, 126976, 126976, 1024, 4096, 0xa410e4ec
+0, 128000, 128000, 1024, 4096, 0xc20b1330
+0, 129024, 129024, 1024, 4096, 0x0e180217
+0, 130048, 130048, 1024, 4096, 0xfbdde307
+0, 131072, 131072, 1024, 4096, 0x00bbba39
+0, 132096, 132096, 1024, 4096, 0x9f80ee16
+0, 133120, 133120, 1024, 4096, 0xd596ef75
+0, 134144, 134144, 1024, 4096, 0x4cf1e95f
+0, 135168, 135168, 1024, 4096, 0xe90cfebf
+0, 136192, 136192, 1024, 4096, 0xd1bcee4c
+0, 137216, 137216, 1024, 4096, 0x22c7f307
+0, 138240, 138240, 1024, 4096, 0x4cbae34e
+0, 139264, 139264, 1024, 4096, 0x504dc53d
+0, 140288, 140288, 1024, 4096, 0x159903df
+0, 141312, 141312, 1024, 4096, 0xa8d8e964
+0, 142336, 142336, 1024, 4096, 0xc3c705df
+0, 143360, 143360, 1024, 4096, 0x765d18a3
+0, 144384, 144384, 1024, 4096, 0xb29bbc30
+0, 145408, 145408, 1024, 4096, 0x79710b4c
+0, 146432, 146432, 1024, 4096, 0x12baca07
+0, 147456, 147456, 1024, 4096, 0xf79a1ae2
+0, 148480, 148480, 1024, 4096, 0x8ada34db
+0, 149504, 149504, 1024, 4096, 0xb599ece4
+0, 150528, 150528, 1024, 4096, 0xf3b3fd10
+0, 151552, 151552, 1024, 4096, 0x192bb956
+0, 152576, 152576, 1024, 4096, 0x9b3fb02e
+0, 153600, 153600, 1024, 4096, 0x9d02df87
+0, 154624, 154624, 1024, 4096, 0x346202db
+0, 155648, 155648, 1024, 4096, 0x25558559
+0, 156672, 156672, 1024, 4096, 0xd6a19d3f
+0, 157696, 157696, 1024, 4096, 0x09a28f3f
+0, 158720, 158720, 1024, 4096, 0x781512c2
+0, 159744, 159744, 1024, 4096, 0xa0b13028
+0, 160768, 160768, 1024, 4096, 0xa2bb286a
+0, 161792, 161792, 1024, 4096, 0x50e30323
+0, 162816, 162816, 1024, 4096, 0xa27980ee
+0, 163840, 163840, 1024, 4096, 0x061bccdc
+0, 164864, 164864, 1024, 4096, 0x21ca20b5
+0, 165888, 165888, 1024, 4096, 0x779a0c4f
+0, 166912, 166912, 1024, 4096, 0x72d3126e
+0, 167936, 167936, 1024, 4096, 0x9dcf7f61
+0, 168960, 168960, 1024, 4096, 0xba471c4c
+0, 169984, 169984, 1024, 4096, 0x281ee63a
+0, 171008, 171008, 1024, 4096, 0x5c2dbd95
+0, 172032, 172032, 1024, 4096, 0x0899436e
+0, 173056, 173056, 1024, 4096, 0x188931ed
+0, 174080, 174080, 1024, 4096, 0xb6fbd4c2
+0, 175104, 175104, 1024, 4096, 0xd24a4a8b
+0, 176128, 176128, 1024, 4096, 0x5a36545e
+0, 177152, 177152, 1024, 4096, 0x736bf6e0
+0, 178176, 178176, 1024, 4096, 0x7d9d2f96
+0, 179200, 179200, 1024, 4096, 0xedbabf65
+0, 180224, 180224, 1024, 4096, 0x37671df7
+0, 181248, 181248, 1024, 4096, 0xb0613ac2
+0, 182272, 182272, 1024, 4096, 0x813f2e04
+0, 183296, 183296, 1024, 4096, 0xbd194ef1
+0, 184320, 184320, 1024, 4096, 0x9a823b47
+0, 185344, 185344, 1024, 4096, 0xaad629d5
+0, 186368, 186368, 1024, 4096, 0x251ab292
+0, 187392, 187392, 1024, 4096, 0xcc224e2a
+0, 188416, 188416, 1024, 4096, 0xac148ebf
+0, 189440, 189440, 1024, 4096, 0xad7624e3
+0, 190464, 190464, 1024, 4096, 0xc5c13c77
+0, 191488, 191488, 1024, 4096, 0x36e42722
+0, 192512, 192512, 1024, 4096, 0xd8860bc0
+0, 193536, 193536, 1024, 4096, 0x4ed90e90
+0, 194560, 194560, 1024, 4096, 0xa8783ac5
+0, 195584, 195584, 1024, 4096, 0x2ebc6bb0
+0, 196608, 196608, 1024, 4096, 0x3a1d40b5
+0, 197632, 197632, 1024, 4096, 0x19ed277d
+0, 198656, 198656, 1024, 4096, 0xd98e04dd
+0, 199680, 199680, 1024, 4096, 0x03fd19d3
+0, 200704, 200704, 1024, 4096, 0x656ab38a
+0, 201728, 201728, 1024, 4096, 0x19ea6511
+0, 202752, 202752, 1024, 4096, 0x04db06ad
+0, 203776, 203776, 1024, 4096, 0x4a4802f1
+0, 204800, 204800, 1024, 4096, 0xa10e97e1
+0, 205824, 205824, 1024, 4096, 0x794f70f3
+0, 206848, 206848, 1024, 4096, 0xced704dd
+0, 207872, 207872, 1024, 4096, 0x6666e19b
+0, 208896, 208896, 1024, 4096, 0xcfb8007f
+0, 209920, 209920, 1024, 4096, 0x4ad31336
+0, 210944, 210944, 1024, 4096, 0x7752db9c
+0, 211968, 211968, 1024, 4096, 0xbaa7c5b4
+0, 212992, 212992, 1024, 4096, 0x6456f689
+0, 214016, 214016, 1024, 4096, 0xacfd8f75
+0, 215040, 215040, 1024, 4096, 0x8e3f2d81
+0, 216064, 216064, 1024, 4096, 0x39d6e19e
+0, 217088, 217088, 1024, 4096, 0xd53b90f7
+0, 218112, 218112, 1024, 4096, 0x9450e8f0
+0, 219136, 219136, 1024, 4096, 0x9832b5cf
+0, 220160, 220160, 1024, 4096, 0x7dd305b1
+0, 221184, 221184, 1024, 4096, 0xdeb3687d
+0, 222208, 222208, 1024, 4096, 0x6a1994d2
+0, 223232, 223232, 1024, 4096, 0xa464ea81
+0, 224256, 224256, 1024, 4096, 0xf25be076
--
2.52.0
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
reply other threads:[~2026-01-25 0:24 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=176930060881.25.10859334153058513405@4457048688e7 \
--to=ffmpeg-devel@ffmpeg.org \
--cc=code@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git