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 <[email protected]> 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 <[email protected]> --- 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 <[email protected]> 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 <[email protected]> --- 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 <[email protected]> Date: Sat, 24 Jan 2026 15:31:31 -0800 Subject: [PATCH 3/5] doc/decoders: add HCA decoder options Signed-off-by: Pavel Roslyy <[email protected]> --- 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 <[email protected]> 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 <[email protected]> --- 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 <[email protected]> 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 <[email protected]> --- 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 -- [email protected] To unsubscribe send an email to [email protected]
