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 :
(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];
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));
* 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
* approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
*/
AVRational r_frame_rate;
+#endif
void *priv_data;
/**
*/
#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;
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;
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);
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) {
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);
}
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;
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) {
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;
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);
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);
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;
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);
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:
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:
*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;
}
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;
}
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)
break;
}
}
+#if FF_API_R_FRAME_RATE
{
int64_t last = st->info->last_dts;
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) {
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.
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);
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)
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);
#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 */
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
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
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
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
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