Compare commits

...

18 Commits

Author SHA1 Message Date
Michael Niedermayer
b08d7969c5 RELEASE_NOTES: Based on the version from 5.1
Name suggested by 3 people on ML

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-09-29 18:47:04 +02:00
Michael Niedermayer
69cf68f5a0 Update for 7.1
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-09-29 18:47:04 +02:00
Michael Niedermayer
0bad953cc5 avcodec/ffv1enc: Fix >8bit context size
Fixes: Ticket5405

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit a9c83e43f2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-09-29 18:47:03 +02:00
Martin Storsjö
09e9d61d0a checkasm/sw_rgb: Revert test additions from e18b46d95f
The unaligned width test cases fail on i386; we have an assembly
function of rgb24toyv12 which is enabled only within
"#if ARCH_X86_32 && HAVE_7REGS", which seems to fail these new
test cases for unaligned widths.

As that assembly function has existed for a long time in that form,
the issue probably isn't very recent, thus skip testing these cases
for now.

Once the assembly function has been fixed, these test cases can
be readded.

Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit 157ce21939)
Signed-off-by: Martin Storsjö <martin@martin.st>
2024-09-29 14:23:06 +03:00
Marvin Scholz
ebd0ca9fee avdevice/decklink_dec: fix leaks on error
In case of errors in this function, the allocated context
was not properly freed in several cases.

Signed-off-by: Marton Balint <cus@passwd.hu>
(cherry picked from commit 8e76c99301)
2024-09-29 10:30:49 +02:00
Marvin Scholz
963145483c avdevice/decklink_dec: fix leak on error
In the early return when both draw_bars and signal_loss_action
options are used, the context allocated previously was not
properly freed.

Introduced in 9bcb86b0fa

Fixes CID1619296

Signed-off-by: Marton Balint <cus@passwd.hu>
(cherry picked from commit 7554346cb5)
2024-09-29 10:30:32 +02:00
Brad Smith
05ff3eb9f2 ppc: Recognize the PPC VSX and Power8 CPU flags
Signed-off-by: Brad Smith <brad@comstyle.com>
(cherry picked from commit 6ec6b07900)
Signed-off-by: Brad Smith <brad@comstyle.com>
2024-09-30 09:08:11 -04:00
Anton Khirnov
d5c308fcc5 lavu/opt: avoid accidentally propagating spurious errors
An error from read_number() is non-fatal here and should not be
forwarded.

(cherry picked from commit 505fea34e5)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2024-09-28 17:14:14 +02:00
Anton Khirnov
55d0c353fe lavu/opt: add missing 'else'
(cherry picked from commit 9b764e9b49)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2024-09-28 17:14:11 +02:00
Lynne
9ada04faa3 vulkan_encode_h265: fix rate control VBV values
The values written were placeholder values.

(cherry picked from commit 81c6e6c9ee)
2024-09-27 09:58:13 +02:00
Lynne
0482410818 vulkan_encode_h264: fix rate control VBV values
The values must be in milliseconds, not bytes.

(cherry picked from commit 934be0ff50)
2024-09-27 09:58:13 +02:00
James Almer
c21472ec31 avutil/iamf: fix doxygen
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit d55ab2ba9b)
2024-09-26 16:43:30 -03:00
James Almer
cb23275623 tests/fate/mov: fix rules for some tests
This was broken in 2fb2cd5c79 and
74553f0026, making a simple make fate-mov fail
and most of the test not run with a simple make fate.

Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 8b4e32f30b)
2024-09-24 21:10:40 -03:00
James Almer
f7643454aa avfilter/vf_showinfo: add missing break to ViewID case
Missed in 6940a6de2f.

Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit fd6cc18d60)
2024-09-24 16:09:05 -03:00
James Almer
2db706374e avcodec/hevc/sei: num_ref_displays can be up to 32
Signed-off-by: James Almer <jamrial@gmail.com>
2024-09-24 15:13:19 -03:00
James Almer
a6a346e154 avcodec/cbs_h265: num_ref_displays can be up to 32
Signed-off-by: James Almer <jamrial@gmail.com>
2024-09-24 15:13:18 -03:00
James Almer
00ce36d037 avcodec/cbs_h265: fix valid range for {left,right}_view_id
view_id_len in VPS is 4 bits, so view_id values can be up to 15 bits long.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-09-24 15:13:18 -03:00
Anton Khirnov
f459c56b0f tests/fate/hevc: use bitexact scaling flags for fate-hevc-mv-switch
Makes the results consistent across platforms.

(cherry picked from commit 9dc0edd454)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2024-09-24 18:43:33 +02:00
19 changed files with 234 additions and 195 deletions

View File

@@ -1 +1 @@
7.0.git
7.1

15
RELEASE_NOTES Normal file
View File

@@ -0,0 +1,15 @@
┌──────────────────────────────────────┐
│ RELEASE NOTES for FFmpeg 7.1 "Péter" │
└──────────────────────────────────────┘
The FFmpeg Project proudly presents FFmpeg 7.1 "Péter", about 6
months after the release of FFmpeg 7.0.
A complete Changelog is available at the root of the project, and the
complete Git history on https://git.ffmpeg.org/gitweb/ffmpeg.git
We hope you will like this release as much as we enjoyed working on it, and
as usual, if you have any questions about it, or any FFmpeg related topic,
feel free to join us on the #ffmpeg IRC channel (on irc.libera.chat) or ask
on the mailing-lists.

View File

@@ -38,7 +38,7 @@ PROJECT_NAME = FFmpeg
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER =
PROJECT_NUMBER = 7.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

View File

@@ -725,14 +725,14 @@ typedef struct H265RawSEI3DReferenceDisplaysInfo {
uint8_t ref_viewing_distance_flag;
uint8_t prec_ref_viewing_dist;
uint8_t num_ref_displays_minus1;
uint8_t left_view_id[31];
uint8_t right_view_id[31];
uint8_t exponent_ref_display_width[31];
uint8_t mantissa_ref_display_width[31];
uint8_t exponent_ref_viewing_distance[31];
uint8_t mantissa_ref_viewing_distance[31];
uint8_t additional_shift_present_flag[31];
uint16_t num_sample_shift_plus512[31];
uint16_t left_view_id[32];
uint16_t right_view_id[32];
uint8_t exponent_ref_display_width[32];
uint8_t mantissa_ref_display_width[32];
uint8_t exponent_ref_viewing_distance[32];
uint8_t mantissa_ref_viewing_distance[32];
uint8_t additional_shift_present_flag[32];
uint16_t num_sample_shift_plus512[32];
uint8_t three_dimensional_reference_displays_extension_flag;
} H265RawSEI3DReferenceDisplaysInfo;

View File

@@ -2299,8 +2299,8 @@ SEI_FUNC(sei_3d_reference_displays_info, (CodedBitstreamContext *ctx, RWContext
ue(prec_ref_viewing_dist, 0, 31);
ue(num_ref_displays_minus1, 0, 31);
for (i = 0; i <= current->num_ref_displays_minus1; i++) {
ues(left_view_id[i], 0, UINT8_MAX, 1, i);
ues(right_view_id[i], 0, UINT8_MAX, 1, i);
ues(left_view_id[i], 0, MAX_UINT_BITS(15), 1, i);
ues(right_view_id[i], 0, MAX_UINT_BITS(15), 1, i);
us(6, exponent_ref_display_width[i], 0, 62, 1, i);
if (!current->exponent_ref_display_width[i])
length = FFMAX(0, (int)current->prec_ref_display_width - 30);

View File

@@ -724,19 +724,21 @@ static av_cold int encode_init(AVCodecContext *avctx)
s->quant_tables[1][2][i]= 11*11*quant5 [i];
s->quant_tables[1][3][i]= 5*11*11*quant5 [i];
s->quant_tables[1][4][i]= 5*5*11*11*quant5 [i];
s->context_count[0] = (11 * 11 * 11 + 1) / 2;
s->context_count[1] = (11 * 11 * 5 * 5 * 5 + 1) / 2;
} else {
s->quant_tables[0][0][i]= quant9_10bit[i];
s->quant_tables[0][1][i]= 11*quant9_10bit[i];
s->quant_tables[0][2][i]= 11*11*quant9_10bit[i];
s->quant_tables[0][1][i]= 9*quant9_10bit[i];
s->quant_tables[0][2][i]= 9*9*quant9_10bit[i];
s->quant_tables[1][0][i]= quant9_10bit[i];
s->quant_tables[1][1][i]= 11*quant9_10bit[i];
s->quant_tables[1][2][i]= 11*11*quant5_10bit[i];
s->quant_tables[1][3][i]= 5*11*11*quant5_10bit[i];
s->quant_tables[1][4][i]= 5*5*11*11*quant5_10bit[i];
s->quant_tables[1][1][i]= 9*quant9_10bit[i];
s->quant_tables[1][2][i]= 9*9*quant5_10bit[i];
s->quant_tables[1][3][i]= 5*9*9*quant5_10bit[i];
s->quant_tables[1][4][i]= 5*5*9*9*quant5_10bit[i];
s->context_count[0] = (9 * 9 * 9 + 1) / 2;
s->context_count[1] = (9 * 9 * 5 * 5 * 5 + 1) / 2;
}
}
s->context_count[0] = (11 * 11 * 11 + 1) / 2;
s->context_count[1] = (11 * 11 * 5 * 5 * 5 + 1) / 2;
if ((ret = ff_ffv1_allocate_initial_states(s)) < 0)
return ret;

View File

@@ -84,14 +84,14 @@ typedef struct HEVCSEITDRDI {
uint8_t ref_viewing_distance_flag;
uint8_t prec_ref_viewing_dist;
uint8_t num_ref_displays;
uint16_t left_view_id[31];
uint16_t right_view_id[31];
uint8_t exponent_ref_display_width[31];
uint8_t mantissa_ref_display_width[31];
uint8_t exponent_ref_viewing_distance[31];
uint8_t mantissa_ref_viewing_distance[31];
uint8_t additional_shift_present_flag[31];
int16_t num_sample_shift[31];
uint16_t left_view_id[32];
uint16_t right_view_id[32];
uint8_t exponent_ref_display_width[32];
uint8_t mantissa_ref_display_width[32];
uint8_t exponent_ref_viewing_distance[32];
uint8_t mantissa_ref_viewing_distance[32];
uint8_t additional_shift_present_flag[32];
int16_t num_sample_shift[32];
uint8_t three_dimensional_reference_displays_extension_flag;
} HEVCSEITDRDI;

View File

@@ -130,12 +130,12 @@ static int init_pic_rc(AVCodecContext *avctx, FFHWBaseEncodePicture *pic,
.consecutiveBFrameCount = FFMAX(ctx->base.b_per_p - 1, 0),
.temporalLayerCount = 0,
};
rc_info->pNext = &hp->vkrc_info;
rc_info->virtualBufferSizeInMs = enc->unit_opts.hrd_buffer_size;
rc_info->initialVirtualBufferSizeInMs = enc->unit_opts.initial_buffer_fullness;
if (rc_info->rateControlMode > VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR) {
rc_info->virtualBufferSizeInMs = (enc->unit_opts.hrd_buffer_size * 1000LL) / avctx->bit_rate;
rc_info->initialVirtualBufferSizeInMs = (enc->unit_opts.initial_buffer_fullness * 1000LL) / avctx->bit_rate;
hp->vkrc_layer_info = (VkVideoEncodeH264RateControlLayerInfoKHR) {
.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,

View File

@@ -124,12 +124,12 @@ static int init_pic_rc(AVCodecContext *avctx, FFHWBaseEncodePicture *pic,
.consecutiveBFrameCount = FFMAX(ctx->base.b_per_p - 1, 0),
.subLayerCount = 0,
};
rc_info->pNext = &hp->vkrc_info;
rc_info->virtualBufferSizeInMs = 1000;
rc_info->initialVirtualBufferSizeInMs = 500;
if (rc_info->rateControlMode > VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR) {
rc_info->virtualBufferSizeInMs = (enc->hrd_buffer_size * 1000LL) / avctx->bit_rate;
rc_info->initialVirtualBufferSizeInMs = (enc->initial_buffer_fullness * 1000LL) / avctx->bit_rate;
hp->vkrc_layer_info = (VkVideoEncodeH265RateControlLayerInfoKHR) {
.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,

View File

@@ -1098,6 +1098,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
}
if (!ctx->draw_bars && ctx->signal_loss_action != SIGNAL_LOSS_NONE) {
av_log(avctx, AV_LOG_ERROR, "options draw_bars and signal_loss_action are mutually exclusive\n");
av_freep(&ctx);
return AVERROR(EINVAL);
}
ctx->audio_depth = cctx->audio_depth;
@@ -1113,7 +1114,8 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
break;
default:
av_log(avctx, AV_LOG_ERROR, "Value of channels option must be one of 2, 8 or 16\n");
return AVERROR(EINVAL);
ret = AVERROR(EINVAL);
goto error;
}
/* Check audio bit depth option for valid values: 16 or 32 */
@@ -1123,18 +1125,20 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
break;
default:
av_log(avctx, AV_LOG_ERROR, "Value for audio bit depth option must be either 16 or 32\n");
return AVERROR(EINVAL);
ret = AVERROR(EINVAL);
goto error;
}
/* List available devices. */
if (ctx->list_devices) {
ff_decklink_list_devices_legacy(avctx, 1, 0);
return AVERROR_EXIT;
ret = AVERROR_EXIT;
goto error;
}
ret = ff_decklink_init_device(avctx, avctx->url);
if (ret < 0)
return ret;
goto error;
/* Get input device. */
if (ctx->dl->QueryInterface(IID_IDeckLinkInput, (void **) &ctx->dli) != S_OK) {
@@ -1335,6 +1339,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
error:
ff_decklink_cleanup(avctx);
av_freep(&cctx->ctx);
return ret;
}

View File

@@ -859,6 +859,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
break;
case AV_FRAME_DATA_VIEW_ID:
av_log(ctx, AV_LOG_INFO, "view id: %d\n", *(int*)sd->data);
break;
default:
if (name)
av_log(ctx, AV_LOG_INFO,

View File

@@ -120,6 +120,8 @@ int av_parse_cpu_caps(unsigned *flags, const char *s)
{ "flags" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, INT64_MAX, .unit = "flags" },
#if ARCH_PPC
{ "altivec" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ALTIVEC }, .unit = "flags" },
{ "vsx" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VSX }, .unit = "flags" },
{ "power8" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_POWER8 }, .unit = "flags" },
#elif ARCH_X86
{ "mmx" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMX }, .unit = "flags" },
{ "mmx2" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMX2 }, .unit = "flags" },

View File

@@ -37,20 +37,29 @@
#include "rational.h"
/**
* @defgroup lavu_iamf Immersive Audio Model and Formats
* @ingroup lavu_audio
*
* Immersive Audio Model and Formats related functions and defines
*
* @defgroup lavu_iamf_params Parameter Definition
* @ingroup lavu_iamf
* @{
* Parameters as defined in section 3.6.1 and 3.8 of IAMF.
* @}
*
* @defgroup lavu_iamf_audio Audio Element
* @ingroup lavu_iamf
* @{
* Audio Elements as defined in section 3.6 of IAMF.
* @}
*
* @defgroup lavu_iamf_mix Mix Presentation
* @ingroup lavu_iamf
* @{
* Mix Presentations as defined in section 3.7 of IAMF.
* @}
*
* @}
* @addtogroup lavu_iamf_params
* @{
*/
@@ -673,6 +682,7 @@ AVIAMFSubmixLayout *av_iamf_submix_add_layout(AVIAMFSubmix *submix);
* upon return, *mix_presentation will be set to NULL.
*/
void av_iamf_mix_presentation_free(AVIAMFMixPresentation **mix_presentation);
/**
* @}
*/

View File

@@ -2343,13 +2343,15 @@ int av_opt_set_array(void *obj, const char *name, int search_flags,
int64_t intnum = 1;
if (val_type == TYPE_BASE(o->type)) {
int err;
ret = opt_copy_elem(obj, val_type, dst, src);
if (ret < 0)
goto fail;
// validate the range for numeric options
ret = read_number(o, dst, &num, &den, &intnum);
if (ret >= 0 && TYPE_BASE(o->type) != AV_OPT_TYPE_FLAGS &&
err = read_number(o, dst, &num, &den, &intnum);
if (err >= 0 && TYPE_BASE(o->type) != AV_OPT_TYPE_FLAGS &&
(!den || o->max * den < num * intnum || o->min * den > num * intnum)) {
num = den ? num * intnum / den : (num && intnum ? INFINITY : NAN);
av_log(obj, AV_LOG_ERROR, "Cannot set array element %u for "
@@ -2362,7 +2364,7 @@ int av_opt_set_array(void *obj, const char *name, int search_flags,
ret = opt_set_elem(obj, target_obj, o, *(const char **)src, dst);
if (ret < 0)
goto fail;
} if (val_type == AV_OPT_TYPE_INT ||
} else if (val_type == AV_OPT_TYPE_INT ||
val_type == AV_OPT_TYPE_INT64 ||
val_type == AV_OPT_TYPE_FLOAT ||
val_type == AV_OPT_TYPE_DOUBLE ||

View File

@@ -51,6 +51,8 @@ static const struct {
{ AV_CPU_FLAG_SETEND, "setend" },
#elif ARCH_PPC
{ AV_CPU_FLAG_ALTIVEC, "altivec" },
{ AV_CPU_FLAG_VSX, "vsx" },
{ AV_CPU_FLAG_POWER8, "power8" },
#elif ARCH_MIPS
{ AV_CPU_FLAG_MMI, "mmi" },
{ AV_CPU_FLAG_MSA, "msa" },

View File

@@ -129,7 +129,7 @@ static int cmp_off_by_n(const uint8_t *ref, const uint8_t *test, size_t n, int a
static void check_rgb24toyv12(struct SwsContext *ctx)
{
static const int input_sizes[] = {2, 16, 128, 540, MAX_LINE_SIZE, -MAX_LINE_SIZE};
static const int input_sizes[] = {16, 128, 512, MAX_LINE_SIZE, -MAX_LINE_SIZE};
LOCAL_ALIGNED_32(uint8_t, src, [BUFSIZE * 3]);
LOCAL_ALIGNED_32(uint8_t, buf_y_0, [BUFSIZE]);

View File

@@ -283,7 +283,7 @@ $(TARGET_SAMPLES)/hevc-conformance/LS_A_Orange_2.bit|$\
$(TARGET_SAMPLES)/hevc/mv_nuh_layer_id.bit|$\
$(TARGET_SAMPLES)/hevc-conformance/NoOutPrior_B_Qualcomm_1.bit|$\
$(TARGET_SAMPLES)/hevc-conformance/MVHEVCS_A.bit
fate-hevc-mv-switch: CMD = framecrc -i "concat:$(INPUT)" -fps_mode passthrough -map 0:vidx:0 -map 0:vidx:1
fate-hevc-mv-switch: CMD = framecrc -i "concat:$(INPUT)" -fps_mode passthrough -map 0:vidx:0 -map 0:vidx:1 -sws_flags +accurate_rnd+bitexact
FATE_HEVC-$(call FRAMECRC, HEVC, HEVC, CONCAT_PROTOCOL) += fate-hevc-mv-switch
# multiview stream, select view by position

View File

@@ -33,8 +33,8 @@ FATE_MOV_FFPROBE-$(call FRAMEMD5, MOV) = fate-mov-neg-firstpts-discard \
FATE_MOV_FASTSTART = fate-mov-faststart-4gb-overflow \
FATE_SAMPLES_AVCONV += $(FATE_MOV)
FATE_SAMPLES_FFPROBE += $(FATE_MOV_FFPROBE)
FATE_SAMPLES_FFMPEG += $(FATE_MOV-yes)
FATE_SAMPLES_FFPROBE += $(FATE_MOV_FFPROBE-yes)
FATE_SAMPLES_FASTSTART += $(FATE_MOV_FASTSTART)
# Make sure we handle edit lists correctly in normal cases.
@@ -281,4 +281,4 @@ fate-mov-mp4-iamf-ambisonic_1: CMD = transcode wav $(SRC) mp4 "-auto_conversion_
FATE_FFMPEG += $(FATE_MOV_FFMPEG-yes)
FATE_FFMPEG_FFPROBE += $(FATE_MOV_FFMPEG_FFPROBE-yes)
fate-mov: $(FATE_MOV-yes) $(FATE_MOV_FFMPEG-yes) $(FATE_MOV_FFMPEG_FFPROBE-yes) $(FATE_MOV_FFPROBE) $(FATE_MOV_FASTSTART) $(FATE_MOV_FFMPEG_SAMPLES-yes) $(FATE_MOV_FFMPEG_FFPROBE_SAMPLES-yes)
fate-mov: $(FATE_MOV-yes) $(FATE_MOV_FFMPEG-yes) $(FATE_MOV_FFMPEG_FFPROBE-yes) $(FATE_MOV_FFPROBE-yes) $(FATE_MOV_FASTSTART) $(FATE_MOV_FFMPEG_SAMPLES-yes) $(FATE_MOV_FFMPEG_FFPROBE_SAMPLES-yes)

View File

@@ -17,156 +17,156 @@
0, 6, 6, 1, 149760, 0x2eacf616
0, 7, 7, 1, 149760, 0x06322ce2
0, 8, 8, 1, 149760, 0xf14aa104
0, 9, 9, 1, 149760, 0xc948dcba
0, 9, 9, 1, 149760, 0x9e1cf00a
1, 10, 10, 1, 24576, 0xf8f638da
0, 11, 11, 1, 149760, 0x674e34b1
0, 11, 11, 1, 149760, 0x6d584d2c
1, 12, 12, 1, 24576, 0xd22675a4
0, 13, 13, 1, 149760, 0x41d3acd6
0, 13, 13, 1, 149760, 0x8b21be89
1, 14, 14, 1, 24576, 0x60da42e6
0, 15, 15, 1, 149760, 0x55a5b835
0, 15, 15, 1, 149760, 0x3946d0ec
1, 16, 16, 1, 24576, 0xe0577f6e
0, 17, 17, 1, 149760, 0xc6958049
0, 17, 17, 1, 149760, 0x70859214
1, 18, 18, 1, 24576, 0x8d9944bd
0, 19, 19, 1, 149760, 0x94b37050
0, 20, 20, 1, 149760, 0xed72a560
0, 21, 21, 1, 149760, 0xd0ccac61
0, 22, 22, 1, 149760, 0x6cc2d7fa
0, 23, 23, 1, 149760, 0x3a02b5ba
0, 24, 24, 1, 149760, 0xce7ef09c
0, 25, 25, 1, 149760, 0xa518fc05
0, 26, 26, 1, 149760, 0x01d238fe
0, 27, 27, 1, 149760, 0x5f5012fa
0, 28, 28, 1, 149760, 0x5b8e7405
0, 29, 29, 1, 149760, 0xcc2e5b33
0, 30, 30, 1, 149760, 0x590a6890
0, 31, 31, 1, 149760, 0x9c7b189f
0, 32, 32, 1, 149760, 0xd0752ef4
0, 33, 33, 1, 149760, 0x367513ce
0, 34, 34, 1, 149760, 0xb64c209d
0, 35, 35, 1, 149760, 0x6e50994c
0, 36, 36, 1, 149760, 0x8276cce4
0, 37, 37, 1, 149760, 0xb292ac8f
0, 38, 38, 1, 149760, 0x57de9d2c
0, 39, 39, 1, 149760, 0xe8533f38
0, 40, 40, 1, 149760, 0xde9b536d
0, 41, 41, 1, 149760, 0x83173b1d
0, 42, 42, 1, 149760, 0x853a83a4
0, 43, 43, 1, 149760, 0x481af1bf
0, 44, 44, 1, 149760, 0x27221abb
0, 45, 45, 1, 149760, 0x094eac00
0, 46, 46, 1, 149760, 0x3f3a27c8
0, 47, 47, 1, 149760, 0x8f19b2af
0, 48, 48, 1, 149760, 0x93e7e591
0, 49, 49, 1, 149760, 0x0c531ab8
0, 50, 50, 1, 149760, 0x3456ef8a
0, 51, 51, 1, 149760, 0xfee2ec1e
0, 52, 52, 1, 149760, 0x76b4b750
0, 53, 53, 1, 149760, 0xa48bb670
0, 54, 54, 1, 149760, 0x3dee7cac
0, 55, 55, 1, 149760, 0x2b20561d
0, 56, 56, 1, 149760, 0xd3c5bf9f
0, 57, 57, 1, 149760, 0x2e87d747
0, 58, 58, 1, 149760, 0x9952760b
0, 59, 59, 1, 149760, 0xa3f5cbda
0, 60, 60, 1, 149760, 0x56e3f94d
0, 61, 61, 1, 149760, 0x902f743f
0, 62, 62, 1, 149760, 0xeffcfd85
0, 63, 63, 1, 149760, 0xe7fc31b2
0, 64, 64, 1, 149760, 0x2e876286
0, 65, 65, 1, 149760, 0x6358b0b2
0, 66, 66, 1, 149760, 0x3e569a4d
1, 67, 67, 1, 24576, 0xa18c481f
0, 68, 68, 1, 149760, 0x641cbce0
1, 69, 69, 1, 24576, 0x9ee94df2
0, 70, 70, 1, 149760, 0x0357d35c
1, 71, 71, 1, 24576, 0x60c55365
0, 72, 72, 1, 149760, 0xe9b5b077
1, 73, 73, 1, 24576, 0x8951536a
0, 74, 74, 1, 149760, 0x3b9c605f
1, 75, 75, 1, 24576, 0xfea04ba5
0, 76, 76, 1, 149760, 0x16d7028b
1, 77, 77, 1, 24576, 0x78094226
0, 78, 78, 1, 149760, 0xf4896eff
1, 79, 79, 1, 24576, 0xacf9314e
0, 80, 80, 1, 149760, 0xc90de4b9
1, 81, 81, 1, 24576, 0x6a6b1c87
0, 82, 82, 1, 149760, 0x2ec258ad
1, 83, 83, 1, 24576, 0x9f360661
0, 84, 84, 1, 149760, 0x3bf720ef
1, 85, 85, 1, 24576, 0x52e80514
0, 86, 86, 1, 149760, 0x67eab73f
1, 87, 87, 1, 24576, 0xe10df48c
0, 88, 88, 1, 149760, 0x020e17ce
1, 89, 89, 1, 24576, 0x71fbdd03
0, 90, 90, 1, 149760, 0xcd677640
1, 91, 91, 1, 24576, 0x1d08c3f6
0, 92, 92, 1, 149760, 0x194cfbc1
1, 93, 93, 1, 24576, 0x4b93b6ca
0, 94, 94, 1, 149760, 0x740f6261
1, 95, 95, 1, 24576, 0x0dea9c12
0, 96, 96, 1, 149760, 0x104b3175
1, 97, 97, 1, 24576, 0x195a92da
0, 98, 98, 1, 149760, 0xc8fd17d1
1, 99, 99, 1, 24576, 0x55dd870b
0, 100, 100, 1, 149760, 0x6f4e7787
1, 101, 101, 1, 24576, 0x7e6b905b
0, 102, 102, 1, 149760, 0xe853418e
1, 103, 103, 1, 24576, 0x0f3fad1d
0, 104, 104, 1, 149760, 0x3dba3e4e
1, 105, 105, 1, 24576, 0xe724d536
0, 106, 106, 1, 149760, 0xba0b4c38
1, 107, 107, 1, 24576, 0xb212fed4
0, 108, 108, 1, 149760, 0x28f8ef1d
1, 109, 109, 1, 24576, 0x3bb423ce
0, 110, 110, 1, 149760, 0xb5d92e4e
1, 111, 111, 1, 24576, 0x20f432db
0, 112, 112, 1, 149760, 0xbaa0d0a2
1, 113, 113, 1, 24576, 0x27412981
0, 114, 114, 1, 149760, 0x0acde200
1, 115, 115, 1, 24576, 0xb7f70143
0, 116, 116, 1, 149760, 0x7388aad3
1, 117, 117, 1, 24576, 0xf31acffb
0, 118, 118, 1, 149760, 0xbac95723
1, 119, 119, 1, 24576, 0x283d8c2c
0, 120, 120, 1, 149760, 0x7633d4af
1, 121, 121, 1, 24576, 0x9fb08184
0, 122, 122, 1, 149760, 0x836e54fc
1, 123, 123, 1, 24576, 0x09696ad1
0, 124, 124, 1, 149760, 0x49096e63
1, 125, 125, 1, 24576, 0x034e69c2
0, 126, 126, 1, 149760, 0x98e14158
1, 127, 127, 1, 24576, 0x1ce4882c
0, 128, 128, 1, 149760, 0x955a43e4
1, 129, 129, 1, 24576, 0x490fda13
0, 130, 130, 1, 149760, 0x3a76c087
1, 131, 131, 1, 24576, 0x4c2e1c09
0, 132, 132, 1, 149760, 0xa221e763
1, 133, 133, 1, 24576, 0x82dd5f8b
0, 134, 134, 1, 149760, 0x1eb33f17
1, 135, 135, 1, 24576, 0xcfb07d6b
0, 136, 136, 1, 149760, 0x13ef3914
1, 137, 137, 1, 24576, 0xef468129
0, 138, 138, 1, 149760, 0x2521b880
1, 139, 139, 1, 24576, 0x24c970fa
0, 140, 140, 1, 149760, 0x78a4faf0
1, 141, 141, 1, 24576, 0x6df14e99
0, 142, 142, 1, 149760, 0xc5f71d65
1, 143, 143, 1, 24576, 0x78f44854
0, 144, 144, 1, 149760, 0x5dbc0a9f
1, 145, 145, 1, 24576, 0x5a7269fd
0, 146, 146, 1, 149760, 0x8ebfd7c3
1, 147, 147, 1, 24576, 0xb1fd8924
0, 148, 148, 1, 149760, 0xb45f0581
1, 149, 149, 1, 24576, 0xa165b829
0, 150, 150, 1, 149760, 0x3b84540b
1, 151, 151, 1, 24576, 0x694cf0e5
0, 152, 152, 1, 149760, 0xec921f35
1, 153, 153, 1, 24576, 0x2fef157b
0, 154, 154, 1, 149760, 0x7b23826a
1, 155, 155, 1, 24576, 0x62ea25dd
0, 156, 156, 1, 149760, 0x518d1f11
1, 157, 157, 1, 24576, 0xfc02365e
0, 158, 158, 1, 149760, 0xc5e694a4
1, 159, 159, 1, 24576, 0x073b3ebd
0, 160, 160, 1, 149760, 0xeb79c961
1, 161, 161, 1, 24576, 0x5ee13be2
0, 19, 19, 1, 149760, 0xd60e93f1
0, 20, 20, 1, 149760, 0xb07cc873
0, 21, 21, 1, 149760, 0x86eacff5
0, 22, 22, 1, 149760, 0x259afb24
0, 23, 23, 1, 149760, 0x225dd819
0, 24, 24, 1, 149760, 0xfc47134c
0, 25, 25, 1, 149760, 0x15da1ece
0, 26, 26, 1, 149760, 0xb2ec5b6f
0, 27, 27, 1, 149760, 0xa18f35c6
0, 28, 28, 1, 149760, 0x8fa8970f
0, 29, 29, 1, 149760, 0x25a87e60
0, 30, 30, 1, 149760, 0x77c88c93
0, 31, 31, 1, 149760, 0xcb673be3
0, 32, 32, 1, 149760, 0x219f51e6
0, 33, 33, 1, 149760, 0x59ea3783
0, 34, 34, 1, 149760, 0x837644b5
0, 35, 35, 1, 149760, 0x9b62bc7c
0, 36, 36, 1, 149760, 0xbb32efa8
0, 37, 37, 1, 149760, 0x1a1bcf3f
0, 38, 38, 1, 149760, 0x9673c0e1
0, 39, 39, 1, 149760, 0x7c6461e2
0, 40, 40, 1, 149760, 0x0551768c
0, 41, 41, 1, 149760, 0xa5ce5d3a
0, 42, 42, 1, 149760, 0xe9caa587
0, 43, 43, 1, 149760, 0xf38613ea
0, 44, 44, 1, 149760, 0x02083cce
0, 45, 45, 1, 149760, 0xd5f0ce4e
0, 46, 46, 1, 149760, 0xb9ed49cd
0, 47, 47, 1, 149760, 0xdbe0d518
0, 48, 48, 1, 149760, 0x80f607ca
0, 49, 49, 1, 149760, 0x9f7e3d36
0, 50, 50, 1, 149760, 0x7f73121f
0, 51, 51, 1, 149760, 0x4cff0e8b
0, 52, 52, 1, 149760, 0x638dd91d
0, 53, 53, 1, 149760, 0xe28dd86b
0, 54, 54, 1, 149760, 0xc2b89e3a
0, 55, 55, 1, 149760, 0xe8b67842
0, 56, 56, 1, 149760, 0xc69fe16f
0, 57, 57, 1, 149760, 0xb8b5f913
0, 58, 58, 1, 149760, 0x5fac972a
0, 59, 59, 1, 149760, 0x0306ed25
0, 60, 60, 1, 149760, 0x94271af0
0, 61, 61, 1, 149760, 0x11b795df
0, 62, 62, 1, 149760, 0x8f651e3e
0, 63, 63, 1, 149760, 0xdfb452f9
0, 64, 64, 1, 149760, 0x686e83ff
0, 65, 65, 1, 149760, 0x56ced1b4
0, 66, 66, 1, 149760, 0x8df69755
1, 67, 67, 1, 24576, 0xa82c4bc6
0, 68, 68, 1, 149760, 0x5245b9f0
1, 69, 69, 1, 24576, 0x2d9451db
0, 70, 70, 1, 149760, 0x957cd0e6
1, 71, 71, 1, 24576, 0x8b4b56c9
0, 72, 72, 1, 149760, 0x1b01adc7
1, 73, 73, 1, 24576, 0x4664573a
0, 74, 74, 1, 149760, 0xea035d18
1, 75, 75, 1, 24576, 0x3f3d4f5a
0, 76, 76, 1, 149760, 0x965affa4
1, 77, 77, 1, 24576, 0xaf034600
0, 78, 78, 1, 149760, 0xa1456bd2
1, 79, 79, 1, 24576, 0x7f5d3504
0, 80, 80, 1, 149760, 0x5291e254
1, 81, 81, 1, 24576, 0x59562099
0, 82, 82, 1, 149760, 0xd97f564a
1, 83, 83, 1, 24576, 0xd8a609de
0, 84, 84, 1, 149760, 0x91a61e7f
1, 85, 85, 1, 24576, 0xcf5008ca
0, 86, 86, 1, 149760, 0xa268b503
1, 87, 87, 1, 24576, 0x2c4af809
0, 88, 88, 1, 149760, 0xd01c152d
1, 89, 89, 1, 24576, 0x8366e0e1
0, 90, 90, 1, 149760, 0xbe51742d
1, 91, 91, 1, 24576, 0x381cc7e9
0, 92, 92, 1, 149760, 0x15d4f93b
1, 93, 93, 1, 24576, 0x576bbadd
0, 94, 94, 1, 149760, 0x4a755f1b
1, 95, 95, 1, 24576, 0x3516a052
0, 96, 96, 1, 149760, 0x630d2e54
1, 97, 97, 1, 24576, 0xd9489703
0, 98, 98, 1, 149760, 0x1c4c14cd
1, 99, 99, 1, 24576, 0xa84f8afa
0, 100, 100, 1, 149760, 0x831a7510
1, 101, 101, 1, 24576, 0x4d32945c
0, 102, 102, 1, 149760, 0x9aac3ee7
1, 103, 103, 1, 24576, 0x6b14b0d7
0, 104, 104, 1, 149760, 0xd50d3baa
1, 105, 105, 1, 24576, 0xb05dd8b6
0, 106, 106, 1, 149760, 0x92d549c6
1, 107, 107, 1, 24576, 0xfd9a02ca
0, 108, 108, 1, 149760, 0x2232ec60
1, 109, 109, 1, 24576, 0xa5b92802
0, 110, 110, 1, 149760, 0x78092c24
1, 111, 111, 1, 24576, 0x385e36de
0, 112, 112, 1, 149760, 0xe5c7cead
1, 113, 113, 1, 24576, 0xd4072d1a
0, 114, 114, 1, 149760, 0x1bf8dfd0
1, 115, 115, 1, 24576, 0x43b30476
0, 116, 116, 1, 149760, 0x117aa880
1, 117, 117, 1, 24576, 0x79afd3bf
0, 118, 118, 1, 149760, 0xf4ee5505
1, 119, 119, 1, 24576, 0x8d538ff9
0, 120, 120, 1, 149760, 0x7b2bd220
1, 121, 121, 1, 24576, 0x187a8509
0, 122, 122, 1, 149760, 0xdbaf519b
1, 123, 123, 1, 24576, 0xd97f6ec7
0, 124, 124, 1, 149760, 0x1a386b01
1, 125, 125, 1, 24576, 0x13e16de1
0, 126, 126, 1, 149760, 0xf0bc3e7d
1, 127, 127, 1, 24576, 0x27628c3b
0, 128, 128, 1, 149760, 0xb2ba417b
1, 129, 129, 1, 24576, 0x260eddf8
0, 130, 130, 1, 149760, 0xb18ebdb9
1, 131, 131, 1, 24576, 0x47291ff7
0, 132, 132, 1, 149760, 0x57c7e50f
1, 133, 133, 1, 24576, 0x6ed4630e
0, 134, 134, 1, 149760, 0xc0d53c18
1, 135, 135, 1, 24576, 0x56f98141
0, 136, 136, 1, 149760, 0x94fb35f1
1, 137, 137, 1, 24576, 0x62c48555
0, 138, 138, 1, 149760, 0x0cc9b521
1, 139, 139, 1, 24576, 0x059a7505
0, 140, 140, 1, 149760, 0xd618f78f
1, 141, 141, 1, 24576, 0x99c752c9
0, 142, 142, 1, 149760, 0x12d119cb
1, 143, 143, 1, 24576, 0x84c94c61
0, 144, 144, 1, 149760, 0x479a07b2
1, 145, 145, 1, 24576, 0xdac16dba
0, 146, 146, 1, 149760, 0x5009d4fe
1, 147, 147, 1, 24576, 0xc3c98ceb
0, 148, 148, 1, 149760, 0x31ce0337
1, 149, 149, 1, 24576, 0x44afbc11
0, 150, 150, 1, 149760, 0x72e850bb
1, 151, 151, 1, 24576, 0x1ed6f485
0, 152, 152, 1, 149760, 0x25cd1c68
1, 153, 153, 1, 24576, 0x14a91968
0, 154, 154, 1, 149760, 0x6f0e7fa8
1, 155, 155, 1, 24576, 0x398a29a7
0, 156, 156, 1, 149760, 0x12b61c36
1, 157, 157, 1, 24576, 0xe7c43a2d
0, 158, 158, 1, 149760, 0xcfd5918d
1, 159, 159, 1, 24576, 0x417c42a9
0, 160, 160, 1, 149760, 0x08b1c6f2
1, 161, 161, 1, 24576, 0x1a273fff