lavf: deprecate r_frame_rate.

According to its description, it is supposed to be the LCM of all the
frame durations. The usability of such a thing is vanishingly small,
especially since we cannot determine it with any amount of reliability.
Therefore get rid of it after the next bump.

Replace it with the average framerate where it makes sense.

FATE results for the wtv and xmv demux tests change. In the wtv case
this is caused by the file being corrupted (or possibly badly cut) and
containing invalid timestamps. This results in lavf estimating the
framerate wrong and making up wrong frame durations.
In the xmv case the file contains pts jumps, so again the estimated
framerate is far from anything sane and lavf again makes up different
frame durations.

In some other tests lavf starts making up frame durations from different
frame.
This commit is contained in:
Anton Khirnov 2012-06-26 13:10:01 +02:00
parent f66eeff1c8
commit aba232cfa9
21 changed files with 160 additions and 125 deletions

View File

@ -2196,9 +2196,9 @@ static int output_packet(InputStream *ist, const AVPacket *pkt)
ret = decode_video (ist, &avpkt, &got_output);
if (avpkt.duration)
ist->next_dts += av_rescale_q(avpkt.duration, ist->st->time_base, AV_TIME_BASE_Q);
else if (ist->st->r_frame_rate.num)
ist->next_dts += av_rescale_q(1, (AVRational){ist->st->r_frame_rate.den,
ist->st->r_frame_rate.num},
else if (ist->st->avg_frame_rate.num)
ist->next_dts += av_rescale_q(1, (AVRational){ist->st->avg_frame_rate.den,
ist->st->avg_frame_rate.num},
AV_TIME_BASE_Q);
else if (ist->st->codec->time_base.num != 0) {
int ticks = ist->st->parser ? ist->st->parser->repeat_pict + 1 :
@ -2526,7 +2526,7 @@ static int transcode_init(void)
(video_sync_method == VSYNC_CFR ||
(video_sync_method == VSYNC_AUTO &&
!(oc->oformat->flags & (AVFMT_NOTIMESTAMPS | AVFMT_VARIABLE_FPS))))) {
ost->frame_rate = ist->st->r_frame_rate.num ? ist->st->r_frame_rate : (AVRational){25, 1};
ost->frame_rate = ist->st->avg_frame_rate.num ? ist->st->avg_frame_rate : (AVRational){25, 1};
if (ost->enc && ost->enc->supported_framerates && !ost->force_fps) {
int idx = av_find_nearest_q_idx(ost->frame_rate, ost->enc->supported_framerates);
ost->frame_rate = ost->enc->supported_framerates[idx];

View File

@ -651,9 +651,6 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
if (fmt_ctx->iformat->flags & AVFMT_SHOW_IDS)
probe_int("id", stream->id);
probe_str("r_frame_rate",
rational_string(val_str, sizeof(val_str), "/",
&stream->r_frame_rate));
probe_str("avg_frame_rate",
rational_string(val_str, sizeof(val_str), "/",
&stream->avg_frame_rate));

View File

@ -630,6 +630,7 @@ typedef struct AVStream {
* not actually used for encoding.
*/
AVCodecContext *codec;
#if FF_API_R_FRAME_RATE
/**
* Real base framerate of the stream.
* This is the lowest framerate with which all timestamps can be
@ -639,6 +640,7 @@ typedef struct AVStream {
* approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
*/
AVRational r_frame_rate;
#endif
void *priv_data;
/**
@ -714,10 +716,12 @@ typedef struct AVStream {
*/
#define MAX_STD_TIMEBASES (60*12+5)
struct {
#if FF_API_R_FRAME_RATE
int64_t last_dts;
int64_t duration_gcd;
int duration_count;
double duration_error[MAX_STD_TIMEBASES];
#endif
int nb_decoded_frames;
int found_decoder;

View File

@ -120,8 +120,11 @@ static int avisynth_read_header(AVFormatContext *s)
st = avformat_new_stream(s, NULL);
st->id = id;
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->r_frame_rate.num = stream->info.dwRate;
st->r_frame_rate.den = stream->info.dwScale;
st->avg_frame_rate.num = stream->info.dwRate;
st->avg_frame_rate.den = stream->info.dwScale;
#if FF_API_R_FRAME_RATE
st->r_frame_rate = st->avg_frame_rate;
#endif
st->codec->width = imgfmt.bmiHeader.biWidth;
st->codec->height = imgfmt.bmiHeader.biHeight;

View File

@ -188,8 +188,10 @@ static int avs_read_packet(AVFormatContext * s, AVPacket * pkt)
avs->st_video->codec->height = avs->height;
avs->st_video->codec->bits_per_coded_sample=avs->bits_per_sample;
avs->st_video->nb_frames = avs->nb_frames;
avs->st_video->r_frame_rate = avs->st_video->avg_frame_rate =
(AVRational){avs->fps, 1};
#if FF_API_R_FRAME_RATE
avs->st_video->r_frame_rate =
#endif
avs->st_video->avg_frame_rate = (AVRational){avs->fps, 1};
}
return avs_read_video_packet(s, pkt, type, sub_type, size,
palette, palette_size);

View File

@ -432,8 +432,10 @@ static int ea_read_header(AVFormatContext *s)
st->codec->width = ea->width;
st->codec->height = ea->height;
avpriv_set_pts_info(st, 33, ea->time_base.num, ea->time_base.den);
st->r_frame_rate = st->avg_frame_rate = (AVRational){ea->time_base.den,
ea->time_base.num};
#if FF_API_R_FRAME_RATE
st->r_frame_rate =
#endif
st->avg_frame_rate = (AVRational){ea->time_base.den, ea->time_base.num};
}
if (ea->audio_codec) {

View File

@ -202,9 +202,9 @@ static int flv_write_header(AVFormatContext *s)
FLVStreamContext *sc;
switch (enc->codec_type) {
case AVMEDIA_TYPE_VIDEO:
if (s->streams[i]->r_frame_rate.den &&
s->streams[i]->r_frame_rate.num) {
framerate = av_q2d(s->streams[i]->r_frame_rate);
if (s->streams[i]->avg_frame_rate.den &&
s->streams[i]->avg_frame_rate.num) {
framerate = av_q2d(s->streams[i]->avg_frame_rate);
} else {
framerate = 1 / av_q2d(s->streams[i]->codec->time_base);
}

View File

@ -1594,9 +1594,11 @@ static int matroska_read_header(AVFormatContext *s)
if (st->codec->codec_id != CODEC_ID_H264)
st->need_parsing = AVSTREAM_PARSE_HEADERS;
if (track->default_duration) {
av_reduce(&st->r_frame_rate.num, &st->r_frame_rate.den,
av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den,
1000000000, track->default_duration, 30000);
st->avg_frame_rate = st->r_frame_rate;
#if FF_API_R_FRAME_RATE
st->r_frame_rate = st->avg_frame_rate;
#endif
}
} else if (track->type == MATROSKA_TRACK_TYPE_AUDIO) {
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;

View File

@ -1984,9 +1984,11 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den,
sc->time_scale*st->nb_frames, st->duration, INT_MAX);
#if FF_API_R_FRAME_RATE
if (sc->stts_count == 1 || (sc->stts_count == 2 && sc->stts_data[1].count == 1))
av_reduce(&st->r_frame_rate.num, &st->r_frame_rate.den,
sc->time_scale, sc->stts_data[0].duration, INT_MAX);
#endif
}
switch (st->codec->codec_id) {

View File

@ -163,7 +163,10 @@ static int nuv_header(AVFormatContext *s) {
vst->codec->height = height;
vst->codec->bits_per_coded_sample = 10;
vst->sample_aspect_ratio = av_d2q(aspect * height / width, 10000);
vst->r_frame_rate = av_d2q(fps, 60000);
#if FF_API_R_FRAME_RATE
vst->r_frame_rate =
#endif
vst->avg_frame_rate = av_d2q(fps, 60000);
avpriv_set_pts_info(vst, 32, 1, 1000);
} else
ctx->v_id = -1;

View File

@ -87,8 +87,12 @@ static int r3d_read_red1(AVFormatContext *s)
framerate.num = avio_rb16(s->pb);
framerate.den = avio_rb16(s->pb);
if (framerate.num && framerate.den)
st->r_frame_rate = st->avg_frame_rate = framerate;
if (framerate.num && framerate.den) {
#if FF_API_R_FRAME_RATE
st->r_frame_rate =
#endif
st->avg_frame_rate = framerate;
}
tmp = avio_r8(s->pb); // audio channels
av_dlog(s, "audio channels %d\n", tmp);
@ -135,10 +139,10 @@ static int r3d_read_rdvo(AVFormatContext *s, Atom *atom)
av_dlog(s, "video offset %d: %#x\n", i, r3d->video_offsets[i]);
}
if (st->r_frame_rate.num)
if (st->avg_frame_rate.num)
st->duration = av_rescale_q(r3d->video_offsets_count,
(AVRational){st->r_frame_rate.den,
st->r_frame_rate.num},
(AVRational){st->avg_frame_rate.den,
st->avg_frame_rate.num},
st->time_base);
av_dlog(s, "duration %"PRId64"\n", st->duration);
@ -262,9 +266,9 @@ static int r3d_read_redv(AVFormatContext *s, AVPacket *pkt, Atom *atom)
pkt->stream_index = 0;
pkt->dts = dts;
if (st->r_frame_rate.num)
if (st->avg_frame_rate.num)
pkt->duration = (uint64_t)st->time_base.den*
st->r_frame_rate.den/st->r_frame_rate.num;
st->avg_frame_rate.den/st->avg_frame_rate.num;
av_dlog(s, "pkt dts %"PRId64" duration %d\n", pkt->dts, pkt->duration);
return 0;
@ -362,11 +366,11 @@ static int r3d_seek(AVFormatContext *s, int stream_index, int64_t sample_time, i
R3DContext *r3d = s->priv_data;
int frame_num;
if (!st->r_frame_rate.num)
if (!st->avg_frame_rate.num)
return -1;
frame_num = av_rescale_q(sample_time, st->time_base,
(AVRational){st->r_frame_rate.den, st->r_frame_rate.num});
(AVRational){st->avg_frame_rate.den, st->avg_frame_rate.num});
av_dlog(s, "seek frame num %d timestamp %"PRId64"\n",
frame_num, sample_time);

View File

@ -158,7 +158,10 @@ int ff_raw_video_read_header(AVFormatContext *s)
goto fail;
}
st->r_frame_rate = st->avg_frame_rate = framerate;
#if FF_API_R_FRAME_RATE
st->r_frame_rate =
#endif
st->avg_frame_rate = framerate;
avpriv_set_pts_info(st, 64, framerate.den, framerate.num);
fail:

View File

@ -344,9 +344,11 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
if ((ret = rm_read_extradata(pb, st->codec, codec_data_size - (avio_tell(pb) - codec_pos))) < 0)
return ret;
av_reduce(&st->r_frame_rate.den, &st->r_frame_rate.num,
av_reduce(&st->avg_frame_rate.den, &st->avg_frame_rate.num,
0x10000, fps, (1 << 30) - 1);
st->avg_frame_rate = st->r_frame_rate;
#if FF_API_R_FRAME_RATE
st->r_frame_rate = st->avg_frame_rate;
#endif
}
skip:

View File

@ -758,9 +758,9 @@ static void compute_frame_duration(int *pnum, int *pden, AVStream *st,
*pden = 0;
switch(st->codec->codec_type) {
case AVMEDIA_TYPE_VIDEO:
if (st->r_frame_rate.num) {
*pnum = st->r_frame_rate.den;
*pden = st->r_frame_rate.num;
if (st->avg_frame_rate.num) {
*pnum = st->avg_frame_rate.den;
*pden = st->avg_frame_rate.num;
} else if(st->time_base.num*1000LL > st->time_base.den) {
*pnum = st->time_base.num;
*pden = st->time_base.den;
@ -2287,7 +2287,9 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
}
for (i=0; i<ic->nb_streams; i++) {
#if FF_API_R_FRAME_RATE
ic->streams[i]->info->last_dts = AV_NOPTS_VALUE;
#endif
ic->streams[i]->info->fps_first_dts = AV_NOPTS_VALUE;
ic->streams[i]->info->fps_last_dts = AV_NOPTS_VALUE;
}
@ -2316,8 +2318,8 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
if (ic->fps_probe_size >= 0)
fps_analyze_framecount = ic->fps_probe_size;
/* variable fps and no guess at the real fps */
if( tb_unreliable(st->codec) && !(st->r_frame_rate.num && st->avg_frame_rate.num)
&& st->info->duration_count < fps_analyze_framecount
if( tb_unreliable(st->codec) && !st->avg_frame_rate.num
&& st->codec_info_nb_frames < fps_analyze_framecount
&& st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
break;
if(st->parser && st->parser->parser->split && !st->codec->extradata)
@ -2423,6 +2425,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
break;
}
}
#if FF_API_R_FRAME_RATE
{
int64_t last = st->info->last_dts;
@ -2446,6 +2449,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
if (last == AV_NOPTS_VALUE || st->info->duration_count <= 1)
st->info->last_dts = pkt->dts;
}
#endif
if(st->parser && st->parser->parser->split && !st->codec->extradata){
int i= st->parser->parser->split(st->codec, pkt->data, pkt->size);
if (i > 0 && i < FF_MAX_EXTRADATA_SIZE) {
@ -2508,6 +2512,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
best_fps, 12*1001, INT_MAX);
}
}
#if FF_API_R_FRAME_RATE
// the check for tb_unreliable() is not completely correct, since this is not about handling
// a unreliable/inexact time base, but a time base that is finer than necessary, as e.g.
// ipmovie.c produces.
@ -2530,6 +2535,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
if (num && (!st->r_frame_rate.num || (double)num/(12*1001) < 1.01 * av_q2d(st->r_frame_rate)))
av_reduce(&st->r_frame_rate.num, &st->r_frame_rate.den, num, 12*1001, INT_MAX);
}
#endif
}else if(st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
if(!st->codec->bits_per_coded_sample)
st->codec->bits_per_coded_sample= av_get_bits_per_sample(st->codec->codec_id);
@ -3343,8 +3349,10 @@ static void dump_stream_format(AVFormatContext *ic, int i, int index, int is_out
if(st->codec->codec_type == AVMEDIA_TYPE_VIDEO){
if(st->avg_frame_rate.den && st->avg_frame_rate.num)
print_fps(av_q2d(st->avg_frame_rate), "fps");
#if FF_API_R_FRAME_RATE
if(st->r_frame_rate.den && st->r_frame_rate.num)
print_fps(av_q2d(st->r_frame_rate), "tbr");
#endif
if(st->time_base.den && st->time_base.num)
print_fps(1/av_q2d(st->time_base), "tbn");
if(st->codec->time_base.den && st->codec->time_base.num)

View File

@ -44,8 +44,8 @@ static int vc1test_write_header(AVFormatContext *s)
avio_wl24(pb, 0); // hrd_buffer
avio_w8(pb, 0x80); // level|cbr|res1
avio_wl32(pb, 0); // hrd_rate
if (s->streams[0]->r_frame_rate.den && s->streams[0]->r_frame_rate.num == 1)
avio_wl32(pb, s->streams[0]->r_frame_rate.den);
if (s->streams[0]->avg_frame_rate.den && s->streams[0]->avg_frame_rate.num == 1)
avio_wl32(pb, s->streams[0]->avg_frame_rate.den);
else
avio_wl32(pb, 0xFFFFFFFF); //variable framerate
avpriv_set_pts_info(s->streams[0], 32, 1, 1000);

View File

@ -64,5 +64,8 @@
#ifndef FF_API_AV_GETTIME
#define FF_API_AV_GETTIME (LIBAVFORMAT_VERSION_MAJOR < 55)
#endif
#ifndef FF_API_R_FRAME_RATE
#define FF_API_R_FRAME_RATE (LIBAVFORMAT_VERSION_MAJOR < 55)
#endif
#endif /* AVFORMAT_VERSION_H */

View File

@ -19,7 +19,7 @@
0, 57600, 61200, 0, 20874, 0xed0b91ec
0, 61200, 64799, 0, 20877, 0xe1623e01
0, 64799, 68399, 0, 20933, 0x19906564
0, 68399, 72000, 0, 20891, 0x3d064fd3
0, 68399, 72000, 3600, 20891, 0x3d064fd3
0, 72000, 75600, 3600, 20834, 0xcb774dbc
0, 75600, 79200, 3600, 20870, 0xbc536589
0, 79200, 82800, 3600, 21421, 0xc99a68e4

View File

@ -232,7 +232,7 @@
1, 4388, 4388, 23, 260, 0x06ad6a93
1, 4411, 4411, 23, 260, 0xdd1b6c91
1, 4435, 4435, 23, 260, 0x05b94d27
0, 4444, 4444, 0, 7121, 0x913d5bd6
0, 4444, 4444, 111, 7121, 0x913d5bd6
1, 4458, 4458, 23, 260, 0x12cc5062
1, 4481, 4481, 23, 260, 0x44526d0f
1, 4504, 4504, 23, 260, 0xf2ac6d95

View File

@ -48,7 +48,7 @@
0, 2708, 2708, 0, 1108, 0x9a6019a8
0, 2750, 2750, 0, 1205, 0xccba4d22
0, 2791, 2791, 0, 1306, 0xde708c19
0, 2833, 2833, 0, 1724, 0xa70b521e
0, 2833, 2833, 41, 1724, 0xa70b521e
0, 2875, 2875, 41, 1336, 0xdf3974b9
0, 2916, 2916, 41, 1259, 0x1f6b4307
0, 2958, 2958, 41, 1194, 0x635f5a43

View File

@ -59,83 +59,83 @@
0, 11486331, 11486331, 400000, 6156, 0xe168394b
1, 11519998, 11519998, 240000, 576, 0x1fea1448
1, 11759998, 11759998, 240000, 576, 0x55840a01
0, 11886331, 13086442, 400000, 23364, 0x53164f1e
0, 11886331, 13086442, 449438, 23364, 0x53164f1e
1, 11999998, 11999998, 240000, 576, 0x6c9c24ce
1, 12239998, 12239998, 240000, 576, 0x955f1e97
0, 12286442, 12286442, 400000, 6708, 0x89877269
0, 12286442, 12286442, 449438, 6708, 0x89877269
1, 12479998, 12479998, 240000, 576, 0x2827134f
0, 12686442, 12686442, 400000, 6908, 0x8d62a249
0, 12686442, 12686442, 449438, 6908, 0x8d62a249
1, 12719998, 12719998, 240000, 576, 0x34a01c29
1, 12959998, 12959998, 240000, 576, 0x7d351e52
0, 13086442, 14286442, 400000, 38156, 0xec41f682
0, 13086442, 14286442, 449438, 38156, 0xec41f682
1, 13199998, 13199998, 240000, 576, 0x00c91d9e
1, 13439998, 13439998, 240000, 576, 0x57ea1a97
0, 13486331, 13486331, 400000, 5764, 0xcc04534b
0, 13486331, 13486331, 449438, 5764, 0xcc04534b
1, 13679998, 13679998, 240000, 576, 0xef3a1c74
0, 13886331, 13886331, 400000, 5388, 0xb8a1c3c5
0, 13886331, 13886331, 449438, 5388, 0xb8a1c3c5
1, 13919998, 13919998, 240000, 576, 0x11fc217d
1, 14159998, 14159998, 240000, 576, 0x59ce20e5
0, 14286442, 15486331, 400000, 16764, 0x59460d96
0, 14286442, 15486331, 449438, 16764, 0x59460d96
1, 14399998, 14399998, 240000, 576, 0xaafc1dbf
1, 14639998, 14639998, 240000, 576, 0xdd941609
0, 14686331, 14686331, 400000, 5548, 0x5c91e93d
0, 14686331, 14686331, 449438, 5548, 0x5c91e93d
1, 14879998, 14879998, 240000, 576, 0x900420b0
0, 15086331, 15086331, 400000, 5652, 0x5e321aed
0, 15086331, 15086331, 449438, 5652, 0x5e321aed
1, 15119998, 15119998, 240000, 576, 0x5f4f1aa1
1, 15359998, 15359998, 240000, 576, 0x7d7e18de
0, 15486331, 16686331, 400000, 15564, 0xefdf5080
0, 15486331, 16686331, 449438, 15564, 0xefdf5080
1, 15599998, 15599998, 240000, 576, 0x986c0d9d
1, 15839998, 15839998, 240000, 576, 0xcb4c21c0
0, 15886331, 15886331, 400000, 6492, 0xd1d5c5f8
0, 15886331, 15886331, 449438, 6492, 0xd1d5c5f8
1, 16079998, 16079998, 240000, 576, 0xbcfb1e8b
0, 16286331, 16286331, 400000, 5604, 0xf9472b44
0, 16286331, 16286331, 449438, 5604, 0xf9472b44
1, 16319998, 16319998, 240000, 576, 0xcb541b4c
1, 16559998, 16559998, 240000, 576, 0x980426e9
0, 16686331, 17886331, 400000, 17924, 0x45815b7b
0, 16686331, 17886331, 449438, 17924, 0x45815b7b
1, 16799998, 16799998, 240000, 576, 0x09d00aa0
1, 17039998, 17039998, 240000, 576, 0xad591374
0, 17086442, 17086442, 400000, 5020, 0x3cc5e554
0, 17086442, 17086442, 449438, 5020, 0x3cc5e554
1, 17279998, 17279998, 240000, 576, 0x97bf1461
0, 17486442, 17486442, 400000, 5276, 0xa0554c12
0, 17486442, 17486442, 449438, 5276, 0xa0554c12
1, 17519998, 17519998, 240000, 576, 0xdc871cc4
1, 17759998, 17759998, 240000, 576, 0x56781896
0, 17886331, 19086442, 400000, 31460, 0x5765eb5f
0, 17886331, 19086442, 449438, 31460, 0x5765eb5f
1, 17999998, 17999998, 240000, 576, 0xc77714e3
1, 18239998, 18239998, 240000, 576, 0x280e18d4
0, 18286331, 18286331, 400000, 4972, 0x91adbab7
0, 18286331, 18286331, 449438, 4972, 0x91adbab7
1, 18479998, 18479998, 240000, 576, 0xbc0d2302
0, 18686442, 18686442, 400000, 5580, 0xfea707cb
0, 18686442, 18686442, 449438, 5580, 0xfea707cb
1, 18719998, 18719998, 240000, 576, 0x79191384
1, 18959998, 18959998, 240000, 576, 0x65481c97
0, 19086442, 20286331, 400000, 17412, 0x0afe4d27
0, 19086442, 20286331, 449438, 17412, 0x0afe4d27
1, 19199998, 19199998, 240000, 576, 0xc94d227d
1, 19439998, 19439998, 240000, 576, 0xa68a1f14
0, 19486442, 19486442, 400000, 5236, 0x03f55309
0, 19486442, 19486442, 449438, 5236, 0x03f55309
1, 19679998, 19679998, 240000, 576, 0x6af11a5c
0, 19886331, 19886331, 400000, 4924, 0x558e753c
0, 19886331, 19886331, 449438, 4924, 0x558e753c
1, 19919998, 19919998, 240000, 576, 0x4d1019ef
1, 20159998, 20159998, 240000, 576, 0x3b1b17b5
0, 20286331, 21486331, 400000, 15396, 0xf145d121
0, 20286331, 21486331, 449438, 15396, 0xf145d121
1, 20399998, 20399998, 240000, 576, 0xcdd8159f
1, 20639998, 20639998, 240000, 576, 0x97cd1d06
0, 20686331, 20686331, 400000, 4708, 0x43066a92
0, 20686331, 20686331, 449438, 4708, 0x43066a92
1, 20879998, 20879998, 240000, 576, 0x5d1b1123
0, 21086442, 21086442, 400000, 4332, 0x9e22bcba
0, 21086442, 21086442, 449438, 4332, 0x9e22bcba
1, 21119998, 21119998, 240000, 576, 0x888d0cb0
1, 21359998, 21359998, 240000, 576, 0x556e1dad
0, 21486331, 22686442, 400000, 12876, 0x46ff9ef4
0, 21486331, 22686442, 449438, 12876, 0x46ff9ef4
1, 21599998, 21599998, 240000, 576, 0xf7af0bce
1, 21839998, 21839998, 240000, 576, 0xb5da160a
0, 21886442, 21886442, 400000, 5940, 0x27cba62e
0, 21886442, 21886442, 449438, 5940, 0x27cba62e
1, 22079998, 22079998, 240000, 576, 0x4a8d0e98
0, 22286442, 22286442, 400000, 6124, 0x6bab0a6d
0, 22286442, 22286442, 449438, 6124, 0x6bab0a6d
1, 22319998, 22319998, 240000, 576, 0x183b1c7e
1, 22559998, 22559998, 240000, 576, 0xc47120e6
0, 22686442, 23886442, 400000, 36428, 0x942f9648
0, 22686442, 23886442, 449438, 36428, 0x942f9648
1, 22799998, 22799998, 240000, 576, 0xb1f31346
0, 23086331, 23086331, 400000, 6660, 0x545a0db7
0, 23486331, 23486331, 400000, 6780, 0x2d1d4189
0, 23886442, 25086331, 400000, 16460, 0x7c3b3ca4
0, 24286442, 24286442, 400000, 6724, 0x8538cc6f
0, 24686442, 24686442, 400000, 7068, 0x69574fd0
0, 25086331, 26286331, 400000, 19552, 0xf230e854
0, 23086331, 23086331, 449438, 6660, 0x545a0db7
0, 23486331, 23486331, 449438, 6780, 0x2d1d4189
0, 23886442, 25086331, 449438, 16460, 0x7c3b3ca4
0, 24286442, 24286442, 449438, 6724, 0x8538cc6f
0, 24686442, 24686442, 449438, 7068, 0x69574fd0
0, 25086331, 26286331, 449438, 19552, 0xf230e854

View File

@ -82,102 +82,102 @@
1, 3183, 3183, 124, 8928, 0x4a9b2d42
0, 4640, 4640, 0, 100, 0x45023894
0, 4680, 4680, 0, 948, 0xa65ed345
0, 4720, 4720, 0, 2808, 0xd7285746
0, 4760, 4760, 40, 5372, 0x05794175
0, 4720, 4720, 108, 2808, 0xd7285746
0, 4760, 4760, 108, 5372, 0x05794175
1, 3307, 3307, 21, 1512, 0xed8b3f4b
0, 4800, 4800, 40, 11596, 0x8636eca7
0, 4800, 4800, 108, 11596, 0x8636eca7
1, 3328, 3328, 21, 1512, 0xa27d3891
0, 4840, 4840, 40, 11524, 0xe1f39be3
0, 4840, 4840, 108, 11524, 0xe1f39be3
1, 3349, 3349, 21, 1512, 0xb0f13eb6
0, 4880, 4880, 40, 23392, 0xab053f05
0, 4880, 4880, 108, 23392, 0xab053f05
1, 3370, 3370, 23, 1656, 0xe5a98324
0, 4920, 4920, 40, 4560, 0x03197d07
0, 4920, 4920, 108, 4560, 0x03197d07
1, 3393, 3393, 31, 2232, 0x15445433
0, 4960, 4960, 40, 4440, 0x1cc361a2
0, 4960, 4960, 108, 4440, 0x1cc361a2
1, 3424, 3424, 31, 2232, 0x5cb348a9
0, 5000, 5000, 40, 23688, 0x16030634
0, 5000, 5000, 108, 23688, 0x16030634
1, 3455, 3455, 31, 2232, 0xf10347da
0, 5040, 5040, 40, 16132, 0xf0eca799
0, 5040, 5040, 108, 16132, 0xf0eca799
1, 3486, 3486, 34, 2448, 0x3e16a175
0, 5080, 5080, 40, 29896, 0x0c0988ea
0, 5080, 5080, 108, 29896, 0x0c0988ea
1, 3520, 3520, 35, 2520, 0x17e3ca2b
0, 5120, 5120, 40, 19956, 0x0093aa0b
0, 5120, 5120, 108, 19956, 0x0093aa0b
1, 3555, 3555, 27, 1944, 0x35c2de84
0, 5160, 5160, 40, 16392, 0x8829a9ca
0, 5160, 5160, 108, 16392, 0x8829a9ca
1, 3582, 3582, 27, 1944, 0x55b4db40
0, 5200, 5200, 40, 16772, 0x9a4a546d
0, 5200, 5200, 108, 16772, 0x9a4a546d
1, 3609, 3609, 29, 2088, 0xdaae14b2
0, 5240, 5240, 40, 8920, 0xcd8ca203
0, 5240, 5240, 108, 8920, 0xcd8ca203
1, 3638, 3638, 27, 1944, 0x92ccd37f
0, 5280, 5280, 40, 9632, 0x53c1d37b
0, 5280, 5280, 108, 9632, 0x53c1d37b
1, 3665, 3665, 27, 1944, 0x70efede1
0, 5320, 5320, 40, 8976, 0xfe4da2cc
0, 5320, 5320, 108, 8976, 0xfe4da2cc
1, 3692, 3692, 27, 1944, 0x7601d304
0, 5360, 5360, 40, 6680, 0x35348fe0
0, 5360, 5360, 108, 6680, 0x35348fe0
1, 3719, 3719, 27, 1944, 0x3922ebc2
0, 5400, 5400, 40, 9228, 0xcbf62b0c
0, 5400, 5400, 108, 9228, 0xcbf62b0c
1, 3746, 3746, 30, 2160, 0xde462f2e
0, 5440, 5440, 40, 5108, 0xd1d88511
0, 5440, 5440, 108, 5108, 0xd1d88511
1, 3776, 3776, 26, 1872, 0x467ac1d2
0, 5480, 5480, 40, 10016, 0xaff4b2b2
0, 5480, 5480, 108, 10016, 0xaff4b2b2
1, 3802, 3802, 26, 1872, 0xa1e4cd43
0, 5520, 5520, 40, 7468, 0x23e81ab8
0, 5520, 5520, 108, 7468, 0x23e81ab8
1, 3828, 3828, 26, 1872, 0x1dceccc6
0, 5560, 5560, 40, 4172, 0x253cd05b
0, 5560, 5560, 108, 4172, 0x253cd05b
1, 3854, 3854, 26, 1872, 0x2bbad2a5
0, 5600, 5600, 40, 8188, 0x7ede743f
0, 5600, 5600, 108, 8188, 0x7ede743f
1, 3880, 3880, 26, 1872, 0xc603d44d
0, 5640, 5640, 40, 2884, 0x2dec55a3
0, 5640, 5640, 108, 2884, 0x2dec55a3
1, 3906, 3906, 26, 1872, 0x1b4cc261
0, 5680, 5680, 40, 3900, 0xd0666a18
0, 5680, 5680, 108, 3900, 0xd0666a18
1, 3932, 3932, 26, 1872, 0x10edd6cf
0, 5720, 5720, 40, 2996, 0x9cc99b8c
0, 5720, 5720, 108, 2996, 0x9cc99b8c
1, 3958, 3958, 33, 2376, 0xecdb9d61
0, 5760, 5760, 40, 2156, 0xae612776
0, 5760, 5760, 108, 2156, 0xae612776
1, 3991, 3991, 36, 2592, 0x5559eced
0, 5800, 5800, 40, 3988, 0x0d2c9992
0, 5840, 5840, 40, 1512, 0x6281fc00
0, 5800, 5800, 108, 3988, 0x0d2c9992
0, 5840, 5840, 108, 1512, 0x6281fc00
1, 4027, 4027, 36, 2592, 0x8848dfc7
0, 5880, 5880, 40, 6544, 0xb75c2562
0, 5880, 5880, 108, 6544, 0xb75c2562
1, 4063, 4063, 36, 2592, 0x4ca2d7da
0, 5920, 5920, 40, 4108, 0xfb21efc9
0, 5920, 5920, 108, 4108, 0xfb21efc9
1, 4099, 4099, 36, 2592, 0x285fd7e6
0, 5960, 5960, 40, 1096, 0x85922a37
0, 6000, 6000, 40, 9740, 0xe57d7647
0, 5960, 5960, 108, 1096, 0x85922a37
0, 6000, 6000, 108, 9740, 0xe57d7647
1, 4135, 4135, 36, 2592, 0x2717e404
0, 6040, 6040, 40, 416, 0x61c2ea02
0, 6040, 6040, 108, 416, 0x61c2ea02
1, 4171, 4171, 36, 2592, 0xf106111a
0, 6080, 6080, 40, 336, 0x1dc5ac1c
0, 6080, 6080, 108, 336, 0x1dc5ac1c
1, 4207, 4207, 36, 2592, 0xd7d01119
0, 6120, 6120, 40, 204, 0x16f57017
0, 6120, 6120, 108, 204, 0x16f57017
1, 4243, 4243, 36, 2592, 0x550cfeda
0, 6160, 6160, 40, 112, 0x78374234
0, 6200, 6200, 40, 40, 0x6cb21985
0, 6160, 6160, 108, 112, 0x78374234
0, 6200, 6200, 108, 40, 0x6cb21985
1, 4279, 4279, 36, 2592, 0x47ad00c4
1, 4315, 4315, 36, 2592, 0x39bbf306
1, 4351, 4351, 45, 3240, 0x69addfce
1, 4396, 4396, 297, 21384, 0x254f63e0
1, 4693, 4693, 298, 21456, 0x2f7a9859
0, 6840, 6840, 40, 14420, 0x53324ca4
0, 6880, 6880, 40, 40, 0x10971420
0, 6840, 6840, 108, 14420, 0x53324ca4
0, 6880, 6880, 108, 40, 0x10971420
1, 4991, 4991, 521, 37512, 0x6e962928
1, 5512, 5512, 38, 2736, 0x1dc91c69
0, 8000, 8000, 40, 24904, 0x15574f7e
0, 8000, 8000, 108, 24904, 0x15574f7e
1, 5550, 5550, 38, 2736, 0x023434fd
1, 5588, 5588, 38, 2736, 0x906f1541
0, 8160, 8160, 40, 1908, 0xccb2dd3c
0, 8160, 8160, 108, 1908, 0xccb2dd3c
1, 5626, 5626, 38, 2736, 0x85a31102
0, 8200, 8200, 40, 4676, 0xbfa42b7e
0, 8200, 8200, 108, 4676, 0xbfa42b7e
1, 5664, 5664, 42, 3024, 0x9296a5f3
0, 8240, 8240, 40, 3600, 0x87c9dc58
0, 8280, 8280, 40, 8184, 0x504a8e65
0, 8240, 8240, 108, 3600, 0x87c9dc58
0, 8280, 8280, 108, 8184, 0x504a8e65
1, 5706, 5706, 27, 1944, 0x7bf4dedc
0, 8320, 8320, 40, 9636, 0x2efb3006
0, 8320, 8320, 108, 9636, 0x2efb3006
1, 5733, 5733, 27, 1944, 0x4196c404
1, 5760, 5760, 27, 1944, 0xcda97c7a
0, 8360, 8360, 40, 9580, 0x0fb6f4e8
0, 8360, 8360, 108, 9580, 0x0fb6f4e8
1, 5787, 5787, 27, 1944, 0x5f4922b2
0, 8400, 8400, 40, 7840, 0xe996f564
0, 8400, 8400, 108, 7840, 0xe996f564
1, 5814, 5814, 29, 2088, 0x37dfc157
0, 8440, 8440, 40, 4208, 0xe9c2fba2
0, 8480, 8480, 40, 556, 0x3f1e077c
0, 8440, 8440, 108, 4208, 0xe9c2fba2
0, 8480, 8480, 108, 556, 0x3f1e077c