* qatar/master:
fate: Add FATE tests for the Ut Video encoder
lavc: add Ut Video encoder
mpegvideo_enc: remove stray duplicate line from 7f9aaa4
swscale: x86: fix #endif comments in rgb2rgb template file
avconv: mark more options as expert.
avconv: split printing "main options" into global and per-file.
avconv: refactor help printing.
Conflicts:
Changelog
ffmpeg_opt.c
ffserver.c
libavcodec/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -142,7 +142,7 @@ int64_t parse_time_or_die(const char *context, const char *timestr, |
142 | 142 |
} |
143 | 143 |
|
144 | 144 |
void show_help_options(const OptionDef *options, const char *msg, int req_flags, |
145 |
- int rej_flags) |
|
145 |
+ int rej_flags, int alt_flags) |
|
146 | 146 |
{ |
147 | 147 |
const OptionDef *po; |
148 | 148 |
int first; |
... | ... |
@@ -152,6 +152,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags, |
152 | 152 |
char buf[64]; |
153 | 153 |
|
154 | 154 |
if (((po->flags & req_flags) != req_flags) || |
155 |
+ (alt_flags && !(po->flags & alt_flags)) || |
|
155 | 156 |
(po->flags & rej_flags)) |
156 | 157 |
continue; |
157 | 158 |
|
... | ... |
@@ -178,9 +178,10 @@ typedef struct { |
178 | 178 |
* @param msg title of this group. Only printed if at least one option matches. |
179 | 179 |
* @param req_flags print only options which have all those flags set. |
180 | 180 |
* @param rej_flags don't print options which have any of those flags set. |
181 |
+ * @param alt_flags print only options that have at least one of those flags set |
|
181 | 182 |
*/ |
182 | 183 |
void show_help_options(const OptionDef *options, const char *msg, int req_flags, |
183 |
- int rej_flags); |
|
184 |
+ int rej_flags, int alt_flags); |
|
184 | 185 |
|
185 | 186 |
/** |
186 | 187 |
* Show help for all options with given flags in class and all its |
... | ... |
@@ -666,7 +666,7 @@ following image formats are supported: |
666 | 666 |
@tab encoding supported through external library libtheora |
667 | 667 |
@item Tiertex Limited SEQ video @tab @tab X |
668 | 668 |
@tab Codec used in DOS CD-ROM FlashBack game. |
669 |
-@item Ut Video @tab @tab X |
|
669 |
+@item Ut Video @tab X @tab X |
|
670 | 670 |
@item v210 QuickTime uncompressed 4:2:2 10-bit @tab X @tab X |
671 | 671 |
@item v308 QuickTime uncompressed 4:4:4 @tab X @tab X |
672 | 672 |
@item v408 QuickTime uncompressed 4:4:4:4 @tab X @tab X |
... | ... |
@@ -2141,32 +2141,68 @@ static int opt_filter_complex(const char *opt, const char *arg) |
2141 | 2141 |
|
2142 | 2142 |
void show_help_default(const char *opt, const char *arg) |
2143 | 2143 |
{ |
2144 |
- int flags = AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM; |
|
2144 |
+ /* per-file options have at least one of those set */ |
|
2145 |
+ const int per_file = OPT_SPEC | OPT_OFFSET | OPT_FUNC2; |
|
2146 |
+ int show_advanced = 0, show_avoptions = 0; |
|
2147 |
+ |
|
2148 |
+ if (opt) { |
|
2149 |
+ if (!strcmp(opt, "long")) |
|
2150 |
+ show_advanced = 1; |
|
2151 |
+ else if (!strcmp(opt, "full")) |
|
2152 |
+ show_advanced = show_avoptions = 1; |
|
2153 |
+ else |
|
2154 |
+ av_log(NULL, AV_LOG_ERROR, "Unknown help option '%s'.\n", opt); |
|
2155 |
+ } |
|
2145 | 2156 |
|
2146 | 2157 |
show_usage(); |
2158 |
+ |
|
2159 |
+ printf("Getting help:\n" |
|
2160 |
+ " -h -- print basic options\n" |
|
2161 |
+ " -h long -- print more options\n" |
|
2162 |
+ " -h full -- print all options (including all format and codec specific options, very long)\n" |
|
2163 |
+ " See man %s for detailed description of the options.\n" |
|
2164 |
+ "\n", program_name); |
|
2165 |
+ |
|
2147 | 2166 |
show_help_options(options, "Print help / information / capabilities:", |
2148 |
- OPT_EXIT, 0); |
|
2149 |
- show_help_options(options, "Main options:", |
|
2150 |
- 0, OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE | |
|
2151 |
- OPT_EXIT); |
|
2152 |
- show_help_options(options, "Advanced options:", |
|
2153 |
- OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE); |
|
2167 |
+ OPT_EXIT, 0, 0); |
|
2168 |
+ |
|
2169 |
+ show_help_options(options, "Global options (affect whole program " |
|
2170 |
+ "instead of just one file:", |
|
2171 |
+ 0, per_file | OPT_EXIT | OPT_EXPERT, 0); |
|
2172 |
+ if (show_advanced) |
|
2173 |
+ show_help_options(options, "Advanced global options:", OPT_EXPERT, |
|
2174 |
+ per_file | OPT_EXIT, 0); |
|
2175 |
+ |
|
2176 |
+ show_help_options(options, "Per-file main options:", 0, |
|
2177 |
+ OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE | |
|
2178 |
+ OPT_EXIT, per_file); |
|
2179 |
+ if (show_advanced) |
|
2180 |
+ show_help_options(options, "Advanced per-file options:", |
|
2181 |
+ OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE, per_file); |
|
2182 |
+ |
|
2154 | 2183 |
show_help_options(options, "Video options:", |
2155 |
- OPT_VIDEO, OPT_EXPERT | OPT_AUDIO); |
|
2156 |
- show_help_options(options, "Advanced Video options:", |
|
2157 |
- OPT_EXPERT | OPT_VIDEO, OPT_AUDIO); |
|
2184 |
+ OPT_VIDEO, OPT_EXPERT | OPT_AUDIO, 0); |
|
2185 |
+ if (show_advanced) |
|
2186 |
+ show_help_options(options, "Advanced Video options:", |
|
2187 |
+ OPT_EXPERT | OPT_VIDEO, OPT_AUDIO, 0); |
|
2188 |
+ |
|
2158 | 2189 |
show_help_options(options, "Audio options:", |
2159 |
- OPT_AUDIO, OPT_EXPERT | OPT_VIDEO); |
|
2160 |
- show_help_options(options, "Advanced Audio options:", |
|
2161 |
- OPT_EXPERT | OPT_AUDIO, OPT_VIDEO); |
|
2190 |
+ OPT_AUDIO, OPT_EXPERT | OPT_VIDEO, 0); |
|
2191 |
+ if (show_advanced) |
|
2192 |
+ show_help_options(options, "Advanced Audio options:", |
|
2193 |
+ OPT_EXPERT | OPT_AUDIO, OPT_VIDEO, 0); |
|
2162 | 2194 |
show_help_options(options, "Subtitle options:", |
2163 |
- OPT_SUBTITLE, 0); |
|
2195 |
+ OPT_SUBTITLE, 0, 0); |
|
2164 | 2196 |
printf("\n"); |
2165 |
- show_help_children(avcodec_get_class(), flags); |
|
2166 |
- show_help_children(avformat_get_class(), flags); |
|
2167 |
- show_help_children(sws_get_class(), flags); |
|
2168 |
- show_help_children(swr_get_class(), AV_OPT_FLAG_AUDIO_PARAM); |
|
2169 |
- show_help_children(avfilter_get_class(), AV_OPT_FLAG_FILTERING_PARAM); |
|
2197 |
+ |
|
2198 |
+ if (show_avoptions) { |
|
2199 |
+ int flags = AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM; |
|
2200 |
+ show_help_children(avcodec_get_class(), flags); |
|
2201 |
+ show_help_children(avformat_get_class(), flags); |
|
2202 |
+ show_help_children(sws_get_class(), flags); |
|
2203 |
+ show_help_children(swr_get_class(), AV_OPT_FLAG_AUDIO_PARAM); |
|
2204 |
+ show_help_children(avfilter_get_class(), AV_OPT_FLAG_FILTERING_PARAM); |
|
2205 |
+ } |
|
2170 | 2206 |
} |
2171 | 2207 |
|
2172 | 2208 |
void show_usage(void) |
... | ... |
@@ -2229,15 +2265,15 @@ const OptionDef options[] = { |
2229 | 2229 |
"set the limit file size in bytes", "limit_size" }, |
2230 | 2230 |
{ "ss", HAS_ARG | OPT_TIME | OPT_OFFSET, { .off = OFFSET(start_time) }, |
2231 | 2231 |
"set the start time offset", "time_off" }, |
2232 |
- { "itsoffset", HAS_ARG | OPT_TIME | OPT_OFFSET, { .off = OFFSET(input_ts_offset) }, |
|
2232 |
+ { "itsoffset", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_EXPERT,{ .off = OFFSET(input_ts_offset) }, |
|
2233 | 2233 |
"set the input ts offset", "time_off" }, |
2234 |
- { "itsscale", HAS_ARG | OPT_DOUBLE | OPT_SPEC, { .off = OFFSET(ts_scale) }, |
|
2234 |
+ { "itsscale", HAS_ARG | OPT_DOUBLE | OPT_SPEC | OPT_EXPERT,{ .off = OFFSET(ts_scale) }, |
|
2235 | 2235 |
"set the input ts scale", "scale" }, |
2236 | 2236 |
{ "timestamp", HAS_ARG | OPT_FUNC2, { .func2_arg = opt_recording_timestamp }, |
2237 | 2237 |
"set the recording timestamp ('now' to set the current time)", "time" }, |
2238 | 2238 |
{ "metadata", HAS_ARG | OPT_STRING | OPT_SPEC, { .off = OFFSET(metadata) }, |
2239 | 2239 |
"add metadata", "string=string" }, |
2240 |
- { "dframes", HAS_ARG | OPT_FUNC2, { .func2_arg = opt_data_frames }, |
|
2240 |
+ { "dframes", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, { .func2_arg = opt_data_frames }, |
|
2241 | 2241 |
"set the number of data frames to record", "number" }, |
2242 | 2242 |
{ "benchmark", OPT_BOOL | OPT_EXPERT, { &do_benchmark }, |
2243 | 2243 |
"add timings for benchmarking" }, |
... | ... |
@@ -2247,7 +2283,7 @@ const OptionDef options[] = { |
2247 | 2247 |
"write program-readable progress information", "url" }, |
2248 | 2248 |
{ "stdin", OPT_BOOL | OPT_EXPERT, { &stdin_interaction }, |
2249 | 2249 |
"enable or disable interaction on standard input" }, |
2250 |
- { "timelimit", HAS_ARG, { .func_arg = opt_timelimit }, |
|
2250 |
+ { "timelimit", HAS_ARG | OPT_EXPERT, { .func_arg = opt_timelimit }, |
|
2251 | 2251 |
"set max runtime in seconds", "limit" }, |
2252 | 2252 |
{ "dump", OPT_BOOL | OPT_EXPERT, { &do_pkt_dump }, |
2253 | 2253 |
"dump each input packet" }, |
... | ... |
@@ -2274,13 +2310,13 @@ const OptionDef options[] = { |
2274 | 2274 |
"timestamp discontinuity delta threshold", "threshold" }, |
2275 | 2275 |
{ "dts_error_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &dts_error_threshold }, |
2276 | 2276 |
"timestamp error delta threshold", "threshold" }, |
2277 |
- { "xerror", OPT_BOOL, { &exit_on_error }, |
|
2277 |
+ { "xerror", OPT_BOOL | OPT_EXPERT, { &exit_on_error }, |
|
2278 | 2278 |
"exit on error", "error" }, |
2279 | 2279 |
{ "copyinkf", OPT_BOOL | OPT_EXPERT | OPT_SPEC, { .off = OFFSET(copy_initial_nonkeyframes) }, |
2280 | 2280 |
"copy initial non-keyframes" }, |
2281 | 2281 |
{ "frames", OPT_INT64 | HAS_ARG | OPT_SPEC, { .off = OFFSET(max_frames) }, |
2282 | 2282 |
"set the number of frames to record", "number" }, |
2283 |
- { "tag", OPT_STRING | HAS_ARG | OPT_SPEC, { .off = OFFSET(codec_tags) }, |
|
2283 |
+ { "tag", OPT_STRING | HAS_ARG | OPT_SPEC | OPT_EXPERT,{ .off = OFFSET(codec_tags) }, |
|
2284 | 2284 |
"force codec tag/fourcc", "fourcc/tag" }, |
2285 | 2285 |
{ "q", HAS_ARG | OPT_EXPERT | OPT_DOUBLE | OPT_SPEC,{ .off = OFFSET(qscale) }, |
2286 | 2286 |
"use fixed quality scale (VBR)", "q" }, |
... | ... |
@@ -2294,9 +2330,9 @@ const OptionDef options[] = { |
2294 | 2294 |
"create a complex filtergraph", "graph_description" }, |
2295 | 2295 |
{ "stats", OPT_BOOL, { &print_stats }, |
2296 | 2296 |
"print progress report during encoding", }, |
2297 |
- { "attach", HAS_ARG | OPT_FUNC2, { .func2_arg = opt_attach }, |
|
2297 |
+ { "attach", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, { .func2_arg = opt_attach }, |
|
2298 | 2298 |
"add an attachment to the output file", "filename" }, |
2299 |
- { "dump_attachment", HAS_ARG | OPT_STRING | OPT_SPEC, { .off = OFFSET(dump_attachment) }, |
|
2299 |
+ { "dump_attachment", HAS_ARG | OPT_STRING | OPT_SPEC |OPT_EXPERT,{ .off = OFFSET(dump_attachment) }, |
|
2300 | 2300 |
"extract an attachment into a file", "filename" }, |
2301 | 2301 |
{ "debug_ts", OPT_BOOL | OPT_EXPERT, { &debug_ts }, |
2302 | 2302 |
"print timestamp debugging info" }, |
... | ... |
@@ -2342,9 +2378,9 @@ const OptionDef options[] = { |
2342 | 2342 |
"rate control override for specific intervals", "override" }, |
2343 | 2343 |
{ "vcodec", OPT_VIDEO | HAS_ARG | OPT_FUNC2, { .func2_arg = opt_video_codec }, |
2344 | 2344 |
"force video codec ('copy' to copy stream)", "codec" }, |
2345 |
- { "sameq", OPT_VIDEO | OPT_BOOL, { &same_quant }, |
|
2345 |
+ { "sameq", OPT_VIDEO | OPT_BOOL | OPT_EXPERT , { &same_quant }, |
|
2346 | 2346 |
"use same quantizer as source (implies VBR)" }, |
2347 |
- { "same_quant", OPT_VIDEO | OPT_BOOL , { &same_quant }, |
|
2347 |
+ { "same_quant", OPT_VIDEO | OPT_BOOL | OPT_EXPERT, { &same_quant }, |
|
2348 | 2348 |
"use same quantizer as source (implies VBR)" }, |
2349 | 2349 |
{ "timecode", OPT_VIDEO | HAS_ARG | OPT_FUNC2, { .func2_arg = opt_timecode }, |
2350 | 2350 |
"set initial TimeCode value.", "hh:mm:ss[:;.]ff" }, |
... | ... |
@@ -2431,7 +2467,7 @@ const OptionDef options[] = { |
2431 | 2431 |
{ "muxpreload", OPT_FLOAT | HAS_ARG | OPT_EXPERT | OPT_OFFSET, { .off = OFFSET(mux_preload) }, |
2432 | 2432 |
"set the initial demux-decode delay", "seconds" }, |
2433 | 2433 |
|
2434 |
- { "bsf", HAS_ARG | OPT_STRING | OPT_SPEC, { .off = OFFSET(bitstream_filters) }, |
|
2434 |
+ { "bsf", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_EXPERT, { .off = OFFSET(bitstream_filters) }, |
|
2435 | 2435 |
"A comma-separated list of bitstream filters", "bitstream_filters" }, |
2436 | 2436 |
{ "absf", HAS_ARG | OPT_AUDIO | OPT_EXPERT| OPT_FUNC2, { .func2_arg = opt_old2new }, |
2437 | 2437 |
"deprecated", "audio bitstream_filters" }, |
... | ... |
@@ -2447,7 +2483,7 @@ const OptionDef options[] = { |
2447 | 2447 |
{ "fpre", HAS_ARG | OPT_EXPERT| OPT_FUNC2, { .func2_arg = opt_preset }, |
2448 | 2448 |
"set options from indicated preset file", "filename" }, |
2449 | 2449 |
/* data codec support */ |
2450 |
- { "dcodec", HAS_ARG | OPT_DATA | OPT_FUNC2, { .func2_arg = opt_data_codec }, |
|
2450 |
+ { "dcodec", HAS_ARG | OPT_DATA | OPT_FUNC2 | OPT_EXPERT, { .func2_arg = opt_data_codec }, |
|
2451 | 2451 |
"force data codec ('copy' to copy stream)", "codec" }, |
2452 | 2452 |
{ "dn", OPT_BOOL | OPT_VIDEO | OPT_OFFSET, { .off = OFFSET(data_disable) }, |
2453 | 2453 |
"disable data" }, |
... | ... |
@@ -3025,8 +3025,8 @@ void show_help_default(const char *opt, const char *arg) |
3025 | 3025 |
{ |
3026 | 3026 |
av_log_set_callback(log_callback_help); |
3027 | 3027 |
show_usage(); |
3028 |
- show_help_options(options, "Main options:", 0, OPT_EXPERT); |
|
3029 |
- show_help_options(options, "Advanced options:", OPT_EXPERT, 0); |
|
3028 |
+ show_help_options(options, "Main options:", 0, OPT_EXPERT, 0); |
|
3029 |
+ show_help_options(options, "Advanced options:", OPT_EXPERT, 0, 0); |
|
3030 | 3030 |
printf("\n"); |
3031 | 3031 |
show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM); |
3032 | 3032 |
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); |
... | ... |
@@ -2076,7 +2076,7 @@ void show_help_default(const char *opt, const char *arg) |
2076 | 2076 |
{ |
2077 | 2077 |
av_log_set_callback(log_callback_help); |
2078 | 2078 |
show_usage(); |
2079 |
- show_help_options(options, "Main options:", 0, 0); |
|
2079 |
+ show_help_options(options, "Main options:", 0, 0, 0); |
|
2080 | 2080 |
printf("\n"); |
2081 | 2081 |
|
2082 | 2082 |
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); |
... | ... |
@@ -4650,8 +4650,7 @@ void show_help_default(const char *opt, const char *arg) |
4650 | 4650 |
printf("usage: ffserver [options]\n" |
4651 | 4651 |
"Hyper fast multi format Audio/Video streaming server\n"); |
4652 | 4652 |
printf("\n"); |
4653 |
- show_help_options(options, "Main options:", 0, 0); |
|
4654 |
- return 0; |
|
4653 |
+ show_help_options(options, "Main options:", 0, 0, 0); |
|
4655 | 4654 |
} |
4656 | 4655 |
|
4657 | 4656 |
static const OptionDef options[] = { |
... | ... |
@@ -432,7 +432,8 @@ OBJS-$(CONFIG_TTA_DECODER) += tta.o |
432 | 432 |
OBJS-$(CONFIG_TWINVQ_DECODER) += twinvq.o celp_math.o |
433 | 433 |
OBJS-$(CONFIG_TXD_DECODER) += txd.o s3tc.o |
434 | 434 |
OBJS-$(CONFIG_ULTI_DECODER) += ulti.o |
435 |
-OBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodec.o |
|
435 |
+OBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodec.o utvideo.o |
|
436 |
+OBJS-$(CONFIG_UTVIDEO_ENCODER) += utvideoenc.o utvideo.o |
|
436 | 437 |
OBJS-$(CONFIG_V210_DECODER) += v210dec.o |
437 | 438 |
OBJS-$(CONFIG_V210_ENCODER) += v210enc.o |
438 | 439 |
OBJS-$(CONFIG_V308_DECODER) += v308dec.o |
... | ... |
@@ -229,7 +229,7 @@ void avcodec_register_all(void) |
229 | 229 |
REGISTER_DECODER (TSCC2, tscc2); |
230 | 230 |
REGISTER_DECODER (TXD, txd); |
231 | 231 |
REGISTER_DECODER (ULTI, ulti); |
232 |
- REGISTER_DECODER (UTVIDEO, utvideo); |
|
232 |
+ REGISTER_ENCDEC (UTVIDEO, utvideo); |
|
233 | 233 |
REGISTER_ENCDEC (V210, v210); |
234 | 234 |
REGISTER_DECODER (V210X, v210x); |
235 | 235 |
REGISTER_ENCDEC (V308, v308); |
236 | 236 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,39 @@ |
0 |
+/* |
|
1 |
+ * Common Ut Video code |
|
2 |
+ * Copyright (c) 2011 Konstantin Shishkov |
|
3 |
+ * |
|
4 |
+ * This file is part of FFmpeg. |
|
5 |
+ * |
|
6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
8 |
+ * License as published by the Free Software Foundation; either |
|
9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
10 |
+ * |
|
11 |
+ * FFmpeg is distributed in the hope that it will be useful, |
|
12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
14 |
+ * Lesser General Public License for more details. |
|
15 |
+ * |
|
16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
19 |
+ */ |
|
20 |
+ |
|
21 |
+/** |
|
22 |
+ * @file |
|
23 |
+ * Common Ut Video code |
|
24 |
+ */ |
|
25 |
+ |
|
26 |
+#include "utvideo.h" |
|
27 |
+ |
|
28 |
+const int ff_ut_pred_order[5] = { |
|
29 |
+ PRED_LEFT, PRED_MEDIAN, PRED_MEDIAN, PRED_NONE, PRED_GRADIENT |
|
30 |
+}; |
|
31 |
+ |
|
32 |
+const int ff_ut_rgb_order[4] = { 1, 2, 0, 3 }; // G, B, R, A |
|
33 |
+ |
|
34 |
+int ff_ut_huff_cmp_len(const void *a, const void *b) |
|
35 |
+{ |
|
36 |
+ const HuffEntry *aa = a, *bb = b; |
|
37 |
+ return (aa->len - bb->len)*256 + aa->sym - bb->sym; |
|
38 |
+} |
0 | 39 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,91 @@ |
0 |
+/* |
|
1 |
+ * Common Ut Video header |
|
2 |
+ * Copyright (c) 2011 Konstantin Shishkov |
|
3 |
+ * |
|
4 |
+ * This file is part of FFmpeg. |
|
5 |
+ * |
|
6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
8 |
+ * License as published by the Free Software Foundation; either |
|
9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
10 |
+ * |
|
11 |
+ * FFmpeg is distributed in the hope that it will be useful, |
|
12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
14 |
+ * Lesser General Public License for more details. |
|
15 |
+ * |
|
16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
19 |
+ */ |
|
20 |
+ |
|
21 |
+#ifndef AVCODEC_UTVIDEO_H |
|
22 |
+#define AVCODEC_UTVIDEO_H |
|
23 |
+ |
|
24 |
+/** |
|
25 |
+ * @file |
|
26 |
+ * Common Ut Video header |
|
27 |
+ */ |
|
28 |
+ |
|
29 |
+#include "libavutil/common.h" |
|
30 |
+#include "avcodec.h" |
|
31 |
+#include "dsputil.h" |
|
32 |
+ |
|
33 |
+enum { |
|
34 |
+ PRED_NONE = 0, |
|
35 |
+ PRED_LEFT, |
|
36 |
+ PRED_GRADIENT, |
|
37 |
+ PRED_MEDIAN, |
|
38 |
+}; |
|
39 |
+ |
|
40 |
+enum { |
|
41 |
+ COMP_NONE = 0, |
|
42 |
+ COMP_HUFF, |
|
43 |
+}; |
|
44 |
+ |
|
45 |
+/* |
|
46 |
+ * "Original format" markers. |
|
47 |
+ * Based on values gotten from the official VFW encoder. |
|
48 |
+ * They are not used during decoding, but they do have |
|
49 |
+ * an informative role on seeing what was input |
|
50 |
+ * to the encoder. |
|
51 |
+ */ |
|
52 |
+enum { |
|
53 |
+ UTVIDEO_RGB = MKTAG(0x00, 0x00, 0x01, 0x18), |
|
54 |
+ UTVIDEO_RGBA = MKTAG(0x00, 0x00, 0x02, 0x18), |
|
55 |
+ UTVIDEO_420 = MKTAG('Y', 'V', '1', '2'), |
|
56 |
+ UTVIDEO_422 = MKTAG('Y', 'U', 'Y', '2'), |
|
57 |
+}; |
|
58 |
+ |
|
59 |
+/* Mapping of libavcodec prediction modes to Ut Video's */ |
|
60 |
+extern const int ff_ut_pred_order[5]; |
|
61 |
+ |
|
62 |
+/* Order of RGB(A) planes in Ut Video */ |
|
63 |
+extern const int ff_ut_rgb_order[4]; |
|
64 |
+ |
|
65 |
+typedef struct UtvideoContext { |
|
66 |
+ AVCodecContext *avctx; |
|
67 |
+ AVFrame pic; |
|
68 |
+ DSPContext dsp; |
|
69 |
+ |
|
70 |
+ uint32_t frame_info_size, flags, frame_info; |
|
71 |
+ int planes; |
|
72 |
+ int slices; |
|
73 |
+ int compression; |
|
74 |
+ int interlaced; |
|
75 |
+ int frame_pred; |
|
76 |
+ |
|
77 |
+ uint8_t *slice_bits, *slice_buffer; |
|
78 |
+ int slice_bits_size; |
|
79 |
+} UtvideoContext; |
|
80 |
+ |
|
81 |
+typedef struct HuffEntry { |
|
82 |
+ uint8_t sym; |
|
83 |
+ uint8_t len; |
|
84 |
+ uint32_t code; |
|
85 |
+} HuffEntry; |
|
86 |
+ |
|
87 |
+/* Compare huffman tree nodes */ |
|
88 |
+int ff_ut_huff_cmp_len(const void *a, const void *b); |
|
89 |
+ |
|
90 |
+#endif /* AVCODEC_UTVIDEO_H */ |
... | ... |
@@ -32,40 +32,7 @@ |
32 | 32 |
#include "get_bits.h" |
33 | 33 |
#include "dsputil.h" |
34 | 34 |
#include "thread.h" |
35 |
- |
|
36 |
-enum { |
|
37 |
- PRED_NONE = 0, |
|
38 |
- PRED_LEFT, |
|
39 |
- PRED_GRADIENT, |
|
40 |
- PRED_MEDIAN, |
|
41 |
-}; |
|
42 |
- |
|
43 |
-typedef struct UtvideoContext { |
|
44 |
- AVCodecContext *avctx; |
|
45 |
- AVFrame pic; |
|
46 |
- DSPContext dsp; |
|
47 |
- |
|
48 |
- uint32_t frame_info_size, flags, frame_info; |
|
49 |
- int planes; |
|
50 |
- int slices; |
|
51 |
- int compression; |
|
52 |
- int interlaced; |
|
53 |
- int frame_pred; |
|
54 |
- |
|
55 |
- uint8_t *slice_bits; |
|
56 |
- int slice_bits_size; |
|
57 |
-} UtvideoContext; |
|
58 |
- |
|
59 |
-typedef struct HuffEntry { |
|
60 |
- uint8_t sym; |
|
61 |
- uint8_t len; |
|
62 |
-} HuffEntry; |
|
63 |
- |
|
64 |
-static int huff_cmp(const void *a, const void *b) |
|
65 |
-{ |
|
66 |
- const HuffEntry *aa = a, *bb = b; |
|
67 |
- return (aa->len - bb->len)*256 + aa->sym - bb->sym; |
|
68 |
-} |
|
35 |
+#include "utvideo.h" |
|
69 | 36 |
|
70 | 37 |
static int build_huff(const uint8_t *src, VLC *vlc, int *fsym) |
71 | 38 |
{ |
... | ... |
@@ -82,7 +49,7 @@ static int build_huff(const uint8_t *src, VLC *vlc, int *fsym) |
82 | 82 |
he[i].sym = i; |
83 | 83 |
he[i].len = *src++; |
84 | 84 |
} |
85 |
- qsort(he, 256, sizeof(*he), huff_cmp); |
|
85 |
+ qsort(he, 256, sizeof(*he), ff_ut_huff_cmp_len); |
|
86 | 86 |
|
87 | 87 |
if (!he[0].len) { |
88 | 88 |
*fsym = he[0].sym; |
... | ... |
@@ -216,8 +183,6 @@ fail: |
216 | 216 |
return AVERROR_INVALIDDATA; |
217 | 217 |
} |
218 | 218 |
|
219 |
-static const int rgb_order[4] = { 1, 2, 0, 3 }; |
|
220 |
- |
|
221 | 219 |
static void restore_rgb_planes(uint8_t *src, int step, int stride, int width, |
222 | 220 |
int height) |
223 | 221 |
{ |
... | ... |
@@ -432,20 +397,22 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, |
432 | 432 |
case PIX_FMT_RGB24: |
433 | 433 |
case PIX_FMT_RGBA: |
434 | 434 |
for (i = 0; i < c->planes; i++) { |
435 |
- ret = decode_plane(c, i, c->pic.data[0] + rgb_order[i], c->planes, |
|
436 |
- c->pic.linesize[0], avctx->width, avctx->height, |
|
437 |
- plane_start[i], c->frame_pred == PRED_LEFT); |
|
435 |
+ ret = decode_plane(c, i, c->pic.data[0] + ff_ut_rgb_order[i], |
|
436 |
+ c->planes, c->pic.linesize[0], avctx->width, |
|
437 |
+ avctx->height, plane_start[i], |
|
438 |
+ c->frame_pred == PRED_LEFT); |
|
438 | 439 |
if (ret) |
439 | 440 |
return ret; |
440 | 441 |
if (c->frame_pred == PRED_MEDIAN) { |
441 | 442 |
if (!c->interlaced) { |
442 |
- restore_median(c->pic.data[0] + rgb_order[i], c->planes, |
|
443 |
- c->pic.linesize[0], avctx->width, |
|
443 |
+ restore_median(c->pic.data[0] + ff_ut_rgb_order[i], |
|
444 |
+ c->planes, c->pic.linesize[0], avctx->width, |
|
444 | 445 |
avctx->height, c->slices, 0); |
445 | 446 |
} else { |
446 |
- restore_median_il(c->pic.data[0] + rgb_order[i], c->planes, |
|
447 |
- c->pic.linesize[0], avctx->width, |
|
448 |
- avctx->height, c->slices, 0); |
|
447 |
+ restore_median_il(c->pic.data[0] + ff_ut_rgb_order[i], |
|
448 |
+ c->planes, c->pic.linesize[0], |
|
449 |
+ avctx->width, avctx->height, c->slices, |
|
450 |
+ 0); |
|
449 | 451 |
} |
450 | 452 |
} |
451 | 453 |
} |
452 | 454 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,735 @@ |
0 |
+/* |
|
1 |
+ * Ut Video encoder |
|
2 |
+ * Copyright (c) 2012 Jan Ekström |
|
3 |
+ * |
|
4 |
+ * This file is part of FFmpeg. |
|
5 |
+ * |
|
6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
8 |
+ * License as published by the Free Software Foundation; either |
|
9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
10 |
+ * |
|
11 |
+ * FFmpeg is distributed in the hope that it will be useful, |
|
12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
14 |
+ * Lesser General Public License for more details. |
|
15 |
+ * |
|
16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
19 |
+ */ |
|
20 |
+ |
|
21 |
+/** |
|
22 |
+ * @file |
|
23 |
+ * Ut Video encoder |
|
24 |
+ */ |
|
25 |
+ |
|
26 |
+#include "libavutil/intreadwrite.h" |
|
27 |
+#include "avcodec.h" |
|
28 |
+#include "internal.h" |
|
29 |
+#include "bytestream.h" |
|
30 |
+#include "put_bits.h" |
|
31 |
+#include "dsputil.h" |
|
32 |
+#include "mathops.h" |
|
33 |
+#include "utvideo.h" |
|
34 |
+ |
|
35 |
+/* Compare huffentry symbols */ |
|
36 |
+static int huff_cmp_sym(const void *a, const void *b) |
|
37 |
+{ |
|
38 |
+ const HuffEntry *aa = a, *bb = b; |
|
39 |
+ return aa->sym - bb->sym; |
|
40 |
+} |
|
41 |
+ |
|
42 |
+static av_cold int utvideo_encode_close(AVCodecContext *avctx) |
|
43 |
+{ |
|
44 |
+ UtvideoContext *c = avctx->priv_data; |
|
45 |
+ |
|
46 |
+ av_freep(&avctx->coded_frame); |
|
47 |
+ av_freep(&c->slice_bits); |
|
48 |
+ av_freep(&c->slice_buffer); |
|
49 |
+ |
|
50 |
+ return 0; |
|
51 |
+} |
|
52 |
+ |
|
53 |
+static av_cold int utvideo_encode_init(AVCodecContext *avctx) |
|
54 |
+{ |
|
55 |
+ UtvideoContext *c = avctx->priv_data; |
|
56 |
+ |
|
57 |
+ uint32_t original_format; |
|
58 |
+ |
|
59 |
+ c->avctx = avctx; |
|
60 |
+ c->frame_info_size = 4; |
|
61 |
+ |
|
62 |
+ switch (avctx->pix_fmt) { |
|
63 |
+ case PIX_FMT_RGB24: |
|
64 |
+ c->planes = 3; |
|
65 |
+ avctx->codec_tag = MKTAG('U', 'L', 'R', 'G'); |
|
66 |
+ original_format = UTVIDEO_RGB; |
|
67 |
+ break; |
|
68 |
+ case PIX_FMT_RGBA: |
|
69 |
+ c->planes = 4; |
|
70 |
+ avctx->codec_tag = MKTAG('U', 'L', 'R', 'A'); |
|
71 |
+ original_format = UTVIDEO_RGBA; |
|
72 |
+ break; |
|
73 |
+ case PIX_FMT_YUV420P: |
|
74 |
+ if (avctx->width & 1 || avctx->height & 1) { |
|
75 |
+ av_log(avctx, AV_LOG_ERROR, |
|
76 |
+ "4:2:0 video requires even width and height.\n"); |
|
77 |
+ return AVERROR_INVALIDDATA; |
|
78 |
+ } |
|
79 |
+ c->planes = 3; |
|
80 |
+ avctx->codec_tag = MKTAG('U', 'L', 'Y', '0'); |
|
81 |
+ original_format = UTVIDEO_420; |
|
82 |
+ break; |
|
83 |
+ case PIX_FMT_YUV422P: |
|
84 |
+ if (avctx->width & 1) { |
|
85 |
+ av_log(avctx, AV_LOG_ERROR, |
|
86 |
+ "4:2:2 video requires even width.\n"); |
|
87 |
+ return AVERROR_INVALIDDATA; |
|
88 |
+ } |
|
89 |
+ c->planes = 3; |
|
90 |
+ avctx->codec_tag = MKTAG('U', 'L', 'Y', '2'); |
|
91 |
+ original_format = UTVIDEO_422; |
|
92 |
+ break; |
|
93 |
+ default: |
|
94 |
+ av_log(avctx, AV_LOG_ERROR, "Unknown pixel format: %d\n", |
|
95 |
+ avctx->pix_fmt); |
|
96 |
+ return AVERROR_INVALIDDATA; |
|
97 |
+ } |
|
98 |
+ |
|
99 |
+ ff_dsputil_init(&c->dsp, avctx); |
|
100 |
+ |
|
101 |
+ /* Check the prediction method, and error out if unsupported */ |
|
102 |
+ if (avctx->prediction_method < 0 || avctx->prediction_method > 4) { |
|
103 |
+ av_log(avctx, AV_LOG_WARNING, |
|
104 |
+ "Prediction method %d is not supported in Ut Video.\n", |
|
105 |
+ avctx->prediction_method); |
|
106 |
+ return AVERROR_OPTION_NOT_FOUND; |
|
107 |
+ } |
|
108 |
+ |
|
109 |
+ if (avctx->prediction_method == FF_PRED_PLANE) { |
|
110 |
+ av_log(avctx, AV_LOG_ERROR, |
|
111 |
+ "Plane prediction is not supported in Ut Video.\n"); |
|
112 |
+ return AVERROR_OPTION_NOT_FOUND; |
|
113 |
+ } |
|
114 |
+ |
|
115 |
+ /* Convert from libavcodec prediction type to Ut Video's */ |
|
116 |
+ c->frame_pred = ff_ut_pred_order[avctx->prediction_method]; |
|
117 |
+ |
|
118 |
+ if (c->frame_pred == PRED_GRADIENT) { |
|
119 |
+ av_log(avctx, AV_LOG_ERROR, "Gradient prediction is not supported.\n"); |
|
120 |
+ return AVERROR_OPTION_NOT_FOUND; |
|
121 |
+ } |
|
122 |
+ |
|
123 |
+ avctx->coded_frame = avcodec_alloc_frame(); |
|
124 |
+ |
|
125 |
+ if (!avctx->coded_frame) { |
|
126 |
+ av_log(avctx, AV_LOG_ERROR, "Could not allocate frame.\n"); |
|
127 |
+ utvideo_encode_close(avctx); |
|
128 |
+ return AVERROR(ENOMEM); |
|
129 |
+ } |
|
130 |
+ |
|
131 |
+ /* extradata size is 4 * 32bit */ |
|
132 |
+ avctx->extradata_size = 16; |
|
133 |
+ |
|
134 |
+ avctx->extradata = av_mallocz(avctx->extradata_size + |
|
135 |
+ FF_INPUT_BUFFER_PADDING_SIZE); |
|
136 |
+ |
|
137 |
+ if (!avctx->extradata) { |
|
138 |
+ av_log(avctx, AV_LOG_ERROR, "Could not allocate extradata.\n"); |
|
139 |
+ utvideo_encode_close(avctx); |
|
140 |
+ return AVERROR(ENOMEM); |
|
141 |
+ } |
|
142 |
+ |
|
143 |
+ c->slice_buffer = av_malloc(avctx->width * avctx->height + |
|
144 |
+ FF_INPUT_BUFFER_PADDING_SIZE); |
|
145 |
+ |
|
146 |
+ if (!c->slice_buffer) { |
|
147 |
+ av_log(avctx, AV_LOG_ERROR, "Cannot allocate temporary buffer 1.\n"); |
|
148 |
+ utvideo_encode_close(avctx); |
|
149 |
+ return AVERROR(ENOMEM); |
|
150 |
+ } |
|
151 |
+ |
|
152 |
+ /* |
|
153 |
+ * Set the version of the encoder. |
|
154 |
+ * Last byte is "implementation ID", which is |
|
155 |
+ * obtained from the creator of the format. |
|
156 |
+ * Libavcodec has been assigned with the ID 0xF0. |
|
157 |
+ */ |
|
158 |
+ AV_WB32(avctx->extradata, MKTAG(1, 0, 0, 0xF0)); |
|
159 |
+ |
|
160 |
+ /* |
|
161 |
+ * Set the "original format" |
|
162 |
+ * Not used for anything during decoding. |
|
163 |
+ */ |
|
164 |
+ AV_WL32(avctx->extradata + 4, original_format); |
|
165 |
+ |
|
166 |
+ /* Write 4 as the 'frame info size' */ |
|
167 |
+ AV_WL32(avctx->extradata + 8, c->frame_info_size); |
|
168 |
+ |
|
169 |
+ /* |
|
170 |
+ * Set how many slices are going to be used. |
|
171 |
+ * Set one slice for now. |
|
172 |
+ */ |
|
173 |
+ c->slices = 1; |
|
174 |
+ |
|
175 |
+ /* Set compression mode */ |
|
176 |
+ c->compression = COMP_HUFF; |
|
177 |
+ |
|
178 |
+ /* |
|
179 |
+ * Set the encoding flags: |
|
180 |
+ * - Slice count minus 1 |
|
181 |
+ * - Interlaced encoding mode flag, set to zero for now. |
|
182 |
+ * - Compression mode (none/huff) |
|
183 |
+ * And write the flags. |
|
184 |
+ */ |
|
185 |
+ c->flags = (c->slices - 1) << 24; |
|
186 |
+ c->flags |= 0 << 11; // bit field to signal interlaced encoding mode |
|
187 |
+ c->flags |= c->compression; |
|
188 |
+ |
|
189 |
+ AV_WL32(avctx->extradata + 12, c->flags); |
|
190 |
+ |
|
191 |
+ return 0; |
|
192 |
+} |
|
193 |
+ |
|
194 |
+static void mangle_rgb_planes(uint8_t *src, int step, int stride, int width, |
|
195 |
+ int height) |
|
196 |
+{ |
|
197 |
+ int i, j; |
|
198 |
+ uint8_t r, g, b; |
|
199 |
+ |
|
200 |
+ for (j = 0; j < height; j++) { |
|
201 |
+ for (i = 0; i < width * step; i += step) { |
|
202 |
+ r = src[i]; |
|
203 |
+ g = src[i + 1]; |
|
204 |
+ b = src[i + 2]; |
|
205 |
+ |
|
206 |
+ src[i] = r - g + 0x80; |
|
207 |
+ src[i + 2] = b - g + 0x80; |
|
208 |
+ } |
|
209 |
+ src += stride; |
|
210 |
+ } |
|
211 |
+} |
|
212 |
+ |
|
213 |
+/* Write data to a plane, no prediction applied */ |
|
214 |
+static void write_plane(uint8_t *src, uint8_t *dst, int step, int stride, |
|
215 |
+ int width, int height) |
|
216 |
+{ |
|
217 |
+ int i, j; |
|
218 |
+ |
|
219 |
+ for (j = 0; j < height; j++) { |
|
220 |
+ for (i = 0; i < width * step; i += step) |
|
221 |
+ *dst++ = src[i]; |
|
222 |
+ |
|
223 |
+ src += stride; |
|
224 |
+ } |
|
225 |
+} |
|
226 |
+ |
|
227 |
+/* Write data to a plane with left prediction */ |
|
228 |
+static void left_predict(uint8_t *src, uint8_t *dst, int step, int stride, |
|
229 |
+ int width, int height) |
|
230 |
+{ |
|
231 |
+ int i, j; |
|
232 |
+ uint8_t prev; |
|
233 |
+ |
|
234 |
+ prev = 0x80; /* Set the initial value */ |
|
235 |
+ for (j = 0; j < height; j++) { |
|
236 |
+ for (i = 0; i < width * step; i += step) { |
|
237 |
+ *dst++ = src[i] - prev; |
|
238 |
+ prev = src[i]; |
|
239 |
+ } |
|
240 |
+ src += stride; |
|
241 |
+ } |
|
242 |
+} |
|
243 |
+ |
|
244 |
+/* Write data to a plane with median prediction */ |
|
245 |
+static void median_predict(uint8_t *src, uint8_t *dst, int step, int stride, |
|
246 |
+ int width, int height) |
|
247 |
+{ |
|
248 |
+ int i, j; |
|
249 |
+ int A, B, C; |
|
250 |
+ uint8_t prev; |
|
251 |
+ |
|
252 |
+ /* First line uses left neighbour prediction */ |
|
253 |
+ prev = 0x80; /* Set the initial value */ |
|
254 |
+ for (i = 0; i < width * step; i += step) { |
|
255 |
+ *dst++ = src[i] - prev; |
|
256 |
+ prev = src[i]; |
|
257 |
+ } |
|
258 |
+ |
|
259 |
+ if (height == 1) |
|
260 |
+ return; |
|
261 |
+ |
|
262 |
+ src += stride; |
|
263 |
+ |
|
264 |
+ /* |
|
265 |
+ * Second line uses top prediction for the first sample, |
|
266 |
+ * and median for the rest. |
|
267 |
+ */ |
|
268 |
+ C = src[-stride]; |
|
269 |
+ *dst++ = src[0] - C; |
|
270 |
+ A = src[0]; |
|
271 |
+ for (i = step; i < width * step; i += step) { |
|
272 |
+ B = src[i - stride]; |
|
273 |
+ *dst++ = src[i] - mid_pred(A, B, (A + B - C) & 0xFF); |
|
274 |
+ C = B; |
|
275 |
+ A = src[i]; |
|
276 |
+ } |
|
277 |
+ |
|
278 |
+ src += stride; |
|
279 |
+ |
|
280 |
+ /* Rest of the coded part uses median prediction */ |
|
281 |
+ for (j = 2; j < height; j++) { |
|
282 |
+ for (i = 0; i < width * step; i += step) { |
|
283 |
+ B = src[i - stride]; |
|
284 |
+ *dst++ = src[i] - mid_pred(A, B, (A + B - C) & 0xFF); |
|
285 |
+ C = B; |
|
286 |
+ A = src[i]; |
|
287 |
+ } |
|
288 |
+ src += stride; |
|
289 |
+ } |
|
290 |
+} |
|
291 |
+ |
|
292 |
+/* Count the usage of values in a plane */ |
|
293 |
+static void count_usage(uint8_t *src, int width, |
|
294 |
+ int height, uint32_t *counts) |
|
295 |
+{ |
|
296 |
+ int i, j; |
|
297 |
+ |
|
298 |
+ for (j = 0; j < height; j++) { |
|
299 |
+ for (i = 0; i < width; i++) { |
|
300 |
+ counts[src[i]]++; |
|
301 |
+ } |
|
302 |
+ src += width; |
|
303 |
+ } |
|
304 |
+} |
|
305 |
+ |
|
306 |
+static uint32_t add_weights(uint32_t w1, uint32_t w2) |
|
307 |
+{ |
|
308 |
+ uint32_t max = (w1 & 0xFF) > (w2 & 0xFF) ? (w1 & 0xFF) : (w2 & 0xFF); |
|
309 |
+ |
|
310 |
+ return ((w1 & 0xFFFFFF00) + (w2 & 0xFFFFFF00)) | (1 + max); |
|
311 |
+} |
|
312 |
+ |
|
313 |
+static void up_heap(uint32_t val, uint32_t *heap, uint32_t *weights) |
|
314 |
+{ |
|
315 |
+ uint32_t initial_val = heap[val]; |
|
316 |
+ |
|
317 |
+ while (weights[initial_val] < weights[heap[val >> 1]]) { |
|
318 |
+ heap[val] = heap[val >> 1]; |
|
319 |
+ val >>= 1; |
|
320 |
+ } |
|
321 |
+ |
|
322 |
+ heap[val] = initial_val; |
|
323 |
+} |
|
324 |
+ |
|
325 |
+static void down_heap(uint32_t nr_heap, uint32_t *heap, uint32_t *weights) |
|
326 |
+{ |
|
327 |
+ uint32_t val = 1; |
|
328 |
+ uint32_t val2; |
|
329 |
+ uint32_t initial_val = heap[val]; |
|
330 |
+ |
|
331 |
+ while (1) { |
|
332 |
+ val2 = val << 1; |
|
333 |
+ |
|
334 |
+ if (val2 > nr_heap) |
|
335 |
+ break; |
|
336 |
+ |
|
337 |
+ if (val2 < nr_heap && weights[heap[val2 + 1]] < weights[heap[val2]]) |
|
338 |
+ val2++; |
|
339 |
+ |
|
340 |
+ if (weights[initial_val] < weights[heap[val2]]) |
|
341 |
+ break; |
|
342 |
+ |
|
343 |
+ heap[val] = heap[val2]; |
|
344 |
+ |
|
345 |
+ val = val2; |
|
346 |
+ } |
|
347 |
+ |
|
348 |
+ heap[val] = initial_val; |
|
349 |
+} |
|
350 |
+ |
|
351 |
+/* Calculate the huffman code lengths from value counts */ |
|
352 |
+static void calculate_code_lengths(uint8_t *lengths, uint32_t *counts) |
|
353 |
+{ |
|
354 |
+ uint32_t nr_nodes, nr_heap, node1, node2; |
|
355 |
+ int i, j; |
|
356 |
+ int32_t k; |
|
357 |
+ |
|
358 |
+ /* Heap and node entries start from 1 */ |
|
359 |
+ uint32_t weights[512]; |
|
360 |
+ uint32_t heap[512]; |
|
361 |
+ int32_t parents[512]; |
|
362 |
+ |
|
363 |
+ /* Set initial weights */ |
|
364 |
+ for (i = 0; i < 256; i++) |
|
365 |
+ weights[i + 1] = (counts[i] ? counts[i] : 1) << 8; |
|
366 |
+ |
|
367 |
+ nr_nodes = 256; |
|
368 |
+ nr_heap = 0; |
|
369 |
+ |
|
370 |
+ heap[0] = 0; |
|
371 |
+ weights[0] = 0; |
|
372 |
+ parents[0] = -2; |
|
373 |
+ |
|
374 |
+ /* Create initial nodes */ |
|
375 |
+ for (i = 1; i <= 256; i++) { |
|
376 |
+ parents[i] = -1; |
|
377 |
+ |
|
378 |
+ heap[++nr_heap] = i; |
|
379 |
+ up_heap(nr_heap, heap, weights); |
|
380 |
+ } |
|
381 |
+ |
|
382 |
+ /* Build the tree */ |
|
383 |
+ while (nr_heap > 1) { |
|
384 |
+ node1 = heap[1]; |
|
385 |
+ heap[1] = heap[nr_heap--]; |
|
386 |
+ |
|
387 |
+ down_heap(nr_heap, heap, weights); |
|
388 |
+ |
|
389 |
+ node2 = heap[1]; |
|
390 |
+ heap[1] = heap[nr_heap--]; |
|
391 |
+ |
|
392 |
+ down_heap(nr_heap, heap, weights); |
|
393 |
+ |
|
394 |
+ nr_nodes++; |
|
395 |
+ |
|
396 |
+ parents[node1] = parents[node2] = nr_nodes; |
|
397 |
+ weights[nr_nodes] = add_weights(weights[node1], weights[node2]); |
|
398 |
+ parents[nr_nodes] = -1; |
|
399 |
+ |
|
400 |
+ heap[++nr_heap] = nr_nodes; |
|
401 |
+ |
|
402 |
+ up_heap(nr_heap, heap, weights); |
|
403 |
+ } |
|
404 |
+ |
|
405 |
+ /* Generate lengths */ |
|
406 |
+ for (i = 1; i <= 256; i++) { |
|
407 |
+ j = 0; |
|
408 |
+ k = i; |
|
409 |
+ |
|
410 |
+ while (parents[k] >= 0) { |
|
411 |
+ k = parents[k]; |
|
412 |
+ j++; |
|
413 |
+ } |
|
414 |
+ |
|
415 |
+ lengths[i - 1] = j; |
|
416 |
+ } |
|
417 |
+} |
|
418 |
+ |
|
419 |
+/* Calculate the actual huffman codes from the code lengths */ |
|
420 |
+static void calculate_codes(HuffEntry *he) |
|
421 |
+{ |
|
422 |
+ int last, i; |
|
423 |
+ uint32_t code; |
|
424 |
+ |
|
425 |
+ qsort(he, 256, sizeof(*he), ff_ut_huff_cmp_len); |
|
426 |
+ |
|
427 |
+ last = 255; |
|
428 |
+ while (he[last].len == 255 && last) |
|
429 |
+ last--; |
|
430 |
+ |
|
431 |
+ code = 1; |
|
432 |
+ for (i = last; i >= 0; i--) { |
|
433 |
+ he[i].code = code >> (32 - he[i].len); |
|
434 |
+ code += 0x80000000u >> (he[i].len - 1); |
|
435 |
+ } |
|
436 |
+ |
|
437 |
+ qsort(he, 256, sizeof(*he), huff_cmp_sym); |
|
438 |
+} |
|
439 |
+ |
|
440 |
+/* Write huffman bit codes to a memory block */ |
|
441 |
+static int write_huff_codes(uint8_t *src, uint8_t *dst, int dst_size, |
|
442 |
+ int width, int height, HuffEntry *he) |
|
443 |
+{ |
|
444 |
+ PutBitContext pb; |
|
445 |
+ int i, j; |
|
446 |
+ int count; |
|
447 |
+ |
|
448 |
+ init_put_bits(&pb, dst, dst_size); |
|
449 |
+ |
|
450 |
+ /* Write the codes */ |
|
451 |
+ for (j = 0; j < height; j++) { |
|
452 |
+ for (i = 0; i < width; i++) |
|
453 |
+ put_bits(&pb, he[src[i]].len, he[src[i]].code); |
|
454 |
+ |
|
455 |
+ src += width; |
|
456 |
+ } |
|
457 |
+ |
|
458 |
+ /* Pad output to a 32bit boundary */ |
|
459 |
+ count = put_bits_count(&pb) & 0x1F; |
|
460 |
+ |
|
461 |
+ if (count) |
|
462 |
+ put_bits(&pb, 32 - count, 0); |
|
463 |
+ |
|
464 |
+ /* Get the amount of bits written */ |
|
465 |
+ count = put_bits_count(&pb); |
|
466 |
+ |
|
467 |
+ /* Flush the rest with zeroes */ |
|
468 |
+ flush_put_bits(&pb); |
|
469 |
+ |
|
470 |
+ return count; |
|
471 |
+} |
|
472 |
+ |
|
473 |
+static int encode_plane(AVCodecContext *avctx, uint8_t *src, |
|
474 |
+ uint8_t *dst, int step, int stride, |
|
475 |
+ int width, int height, PutByteContext *pb) |
|
476 |
+{ |
|
477 |
+ UtvideoContext *c = avctx->priv_data; |
|
478 |
+ uint8_t lengths[256]; |
|
479 |
+ uint32_t counts[256] = { 0 }; |
|
480 |
+ |
|
481 |
+ HuffEntry he[256]; |
|
482 |
+ |
|
483 |
+ uint32_t offset = 0, slice_len = 0; |
|
484 |
+ int i, sstart, send = 0; |
|
485 |
+ int symbol; |
|
486 |
+ |
|
487 |
+ /* Do prediction / make planes */ |
|
488 |
+ switch (c->frame_pred) { |
|
489 |
+ case PRED_NONE: |
|
490 |
+ for (i = 0; i < c->slices; i++) { |
|
491 |
+ sstart = send; |
|
492 |
+ send = height * (i + 1) / c->slices; |
|
493 |
+ write_plane(src + sstart * stride, dst + sstart * width, |
|
494 |
+ step, stride, width, send - sstart); |
|
495 |
+ } |
|
496 |
+ break; |
|
497 |
+ case PRED_LEFT: |
|
498 |
+ for (i = 0; i < c->slices; i++) { |
|
499 |
+ sstart = send; |
|
500 |
+ send = height * (i + 1) / c->slices; |
|
501 |
+ left_predict(src + sstart * stride, dst + sstart * width, |
|
502 |
+ step, stride, width, send - sstart); |
|
503 |
+ } |
|
504 |
+ break; |
|
505 |
+ case PRED_MEDIAN: |
|
506 |
+ for (i = 0; i < c->slices; i++) { |
|
507 |
+ sstart = send; |
|
508 |
+ send = height * (i + 1) / c->slices; |
|
509 |
+ median_predict(src + sstart * stride, dst + sstart * width, |
|
510 |
+ step, stride, width, send - sstart); |
|
511 |
+ } |
|
512 |
+ break; |
|
513 |
+ default: |
|
514 |
+ av_log(avctx, AV_LOG_ERROR, "Unknown prediction mode: %d\n", |
|
515 |
+ c->frame_pred); |
|
516 |
+ return AVERROR_OPTION_NOT_FOUND; |
|
517 |
+ } |
|
518 |
+ |
|
519 |
+ /* Count the usage of values */ |
|
520 |
+ count_usage(dst, width, height, counts); |
|
521 |
+ |
|
522 |
+ /* Check for a special case where only one symbol was used */ |
|
523 |
+ for (symbol = 0; symbol < 256; symbol++) { |
|
524 |
+ /* If non-zero count is found, see if it matches width * height */ |
|
525 |
+ if (counts[symbol]) { |
|
526 |
+ /* Special case if only one symbol was used */ |
|
527 |
+ if (counts[symbol] == width * height) { |
|
528 |
+ /* |
|
529 |
+ * Write a zero for the single symbol |
|
530 |
+ * used in the plane, else 0xFF. |
|
531 |
+ */ |
|
532 |
+ for (i = 0; i < 256; i++) { |
|
533 |
+ if (i == symbol) |
|
534 |
+ bytestream2_put_byte(pb, 0); |
|
535 |
+ else |
|
536 |
+ bytestream2_put_byte(pb, 0xFF); |
|
537 |
+ } |
|
538 |
+ |
|
539 |
+ /* Write zeroes for lengths */ |
|
540 |
+ for (i = 0; i < c->slices; i++) |
|
541 |
+ bytestream2_put_le32(pb, 0); |
|
542 |
+ |
|
543 |
+ /* And that's all for that plane folks */ |
|
544 |
+ return 0; |
|
545 |
+ } |
|
546 |
+ break; |
|
547 |
+ } |
|
548 |
+ } |
|
549 |
+ |
|
550 |
+ /* Calculate huffman lengths */ |
|
551 |
+ calculate_code_lengths(lengths, counts); |
|
552 |
+ |
|
553 |
+ /* |
|
554 |
+ * Write the plane's header into the output packet: |
|
555 |
+ * - huffman code lengths (256 bytes) |
|
556 |
+ * - slice end offsets (gotten from the slice lengths) |
|
557 |
+ */ |
|
558 |
+ for (i = 0; i < 256; i++) { |
|
559 |
+ bytestream2_put_byte(pb, lengths[i]); |
|
560 |
+ |
|
561 |
+ he[i].len = lengths[i]; |
|
562 |
+ he[i].sym = i; |
|
563 |
+ } |
|
564 |
+ |
|
565 |
+ /* Calculate the huffman codes themselves */ |
|
566 |
+ calculate_codes(he); |
|
567 |
+ |
|
568 |
+ send = 0; |
|
569 |
+ for (i = 0; i < c->slices; i++) { |
|
570 |
+ sstart = send; |
|
571 |
+ send = height * (i + 1) / c->slices; |
|
572 |
+ |
|
573 |
+ /* |
|
574 |
+ * Write the huffman codes to a buffer, |
|
575 |
+ * get the offset in bits and convert to bytes. |
|
576 |
+ */ |
|
577 |
+ offset += write_huff_codes(dst + sstart * width, c->slice_bits, |
|
578 |
+ width * (send - sstart), width, |
|
579 |
+ send - sstart, he) >> 3; |
|
580 |
+ |
|
581 |
+ slice_len = offset - slice_len; |
|
582 |
+ |
|
583 |
+ /* Byteswap the written huffman codes */ |
|
584 |
+ c->dsp.bswap_buf((uint32_t *) c->slice_bits, |
|
585 |
+ (uint32_t *) c->slice_bits, |
|
586 |
+ slice_len >> 2); |
|
587 |
+ |
|
588 |
+ /* Write the offset to the stream */ |
|
589 |
+ bytestream2_put_le32(pb, offset); |
|
590 |
+ |
|
591 |
+ /* Seek to the data part of the packet */ |
|
592 |
+ bytestream2_seek_p(pb, 4 * (c->slices - i - 1) + |
|
593 |
+ offset - slice_len, SEEK_CUR); |
|
594 |
+ |
|
595 |
+ /* Write the slices' data into the output packet */ |
|
596 |
+ bytestream2_put_buffer(pb, c->slice_bits, slice_len); |
|
597 |
+ |
|
598 |
+ /* Seek back to the slice offsets */ |
|
599 |
+ bytestream2_seek_p(pb, -4 * (c->slices - i - 1) - offset, |
|
600 |
+ SEEK_CUR); |
|
601 |
+ |
|
602 |
+ slice_len = offset; |
|
603 |
+ } |
|
604 |
+ |
|
605 |
+ /* And at the end seek to the end of written slice(s) */ |
|
606 |
+ bytestream2_seek_p(pb, offset, SEEK_CUR); |
|
607 |
+ |
|
608 |
+ return 0; |
|
609 |
+} |
|
610 |
+ |
|
611 |
+static int utvideo_encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
|
612 |
+ const AVFrame *pic, int *got_packet) |
|
613 |
+{ |
|
614 |
+ UtvideoContext *c = avctx->priv_data; |
|
615 |
+ PutByteContext pb; |
|
616 |
+ |
|
617 |
+ uint32_t frame_info; |
|
618 |
+ |
|
619 |
+ uint8_t *dst; |
|
620 |
+ |
|
621 |
+ int width = avctx->width, height = avctx->height; |
|
622 |
+ int i, ret = 0; |
|
623 |
+ |
|
624 |
+ /* Allocate a new packet if needed, and set it to the pointer dst */ |
|
625 |
+ ret = ff_alloc_packet(pkt, (256 + 4 * c->slices + width * height) * |
|
626 |
+ c->planes + 4); |
|
627 |
+ |
|
628 |
+ if (ret < 0) { |
|
629 |
+ av_log(avctx, AV_LOG_ERROR, |
|
630 |
+ "Error allocating the output packet, or the provided packet " |
|
631 |
+ "was too small.\n"); |
|
632 |
+ return ret; |
|
633 |
+ } |
|
634 |
+ |
|
635 |
+ dst = pkt->data; |
|
636 |
+ |
|
637 |
+ bytestream2_init_writer(&pb, dst, pkt->size); |
|
638 |
+ |
|
639 |
+ av_fast_malloc(&c->slice_bits, &c->slice_bits_size, |
|
640 |
+ width * height + FF_INPUT_BUFFER_PADDING_SIZE); |
|
641 |
+ |
|
642 |
+ if (!c->slice_bits) { |
|
643 |
+ av_log(avctx, AV_LOG_ERROR, "Cannot allocate temporary buffer 2.\n"); |
|
644 |
+ return AVERROR(ENOMEM); |
|
645 |
+ } |
|
646 |
+ |
|
647 |
+ /* In case of RGB, mangle the planes to Ut Video's format */ |
|
648 |
+ if (avctx->pix_fmt == PIX_FMT_RGBA || avctx->pix_fmt == PIX_FMT_RGB24) |
|
649 |
+ mangle_rgb_planes(pic->data[0], c->planes, pic->linesize[0], width, |
|
650 |
+ height); |
|
651 |
+ |
|
652 |
+ /* Deal with the planes */ |
|
653 |
+ switch (avctx->pix_fmt) { |
|
654 |
+ case PIX_FMT_RGB24: |
|
655 |
+ case PIX_FMT_RGBA: |
|
656 |
+ for (i = 0; i < c->planes; i++) { |
|
657 |
+ ret = encode_plane(avctx, pic->data[0] + ff_ut_rgb_order[i], |
|
658 |
+ c->slice_buffer, c->planes, pic->linesize[0], |
|
659 |
+ width, height, &pb); |
|
660 |
+ |
|
661 |
+ if (ret) { |
|
662 |
+ av_log(avctx, AV_LOG_ERROR, "Error encoding plane %d.\n", i); |
|
663 |
+ return ret; |
|
664 |
+ } |
|
665 |
+ } |
|
666 |
+ break; |
|
667 |
+ case PIX_FMT_YUV422P: |
|
668 |
+ for (i = 0; i < c->planes; i++) { |
|
669 |
+ ret = encode_plane(avctx, pic->data[i], c->slice_buffer, 1, |
|
670 |
+ pic->linesize[i], width >> !!i, height, &pb); |
|
671 |
+ |
|
672 |
+ if (ret) { |
|
673 |
+ av_log(avctx, AV_LOG_ERROR, "Error encoding plane %d.\n", i); |
|
674 |
+ return ret; |
|
675 |
+ } |
|
676 |
+ } |
|
677 |
+ break; |
|
678 |
+ case PIX_FMT_YUV420P: |
|
679 |
+ for (i = 0; i < c->planes; i++) { |
|
680 |
+ ret = encode_plane(avctx, pic->data[i], c->slice_buffer, 1, |
|
681 |
+ pic->linesize[i], width >> !!i, height >> !!i, |
|
682 |
+ &pb); |
|
683 |
+ |
|
684 |
+ if (ret) { |
|
685 |
+ av_log(avctx, AV_LOG_ERROR, "Error encoding plane %d.\n", i); |
|
686 |
+ return ret; |
|
687 |
+ } |
|
688 |
+ } |
|
689 |
+ break; |
|
690 |
+ default: |
|
691 |
+ av_log(avctx, AV_LOG_ERROR, "Unknown pixel format: %d\n", |
|
692 |
+ avctx->pix_fmt); |
|
693 |
+ return AVERROR_INVALIDDATA; |
|
694 |
+ } |
|
695 |
+ |
|
696 |
+ /* |
|
697 |
+ * Write frame information (LE 32bit unsigned) |
|
698 |
+ * into the output packet. |
|
699 |
+ * Contains the prediction method. |
|
700 |
+ */ |
|
701 |
+ frame_info = c->frame_pred << 8; |
|
702 |
+ bytestream2_put_le32(&pb, frame_info); |
|
703 |
+ |
|
704 |
+ /* |
|
705 |
+ * At least currently Ut Video is IDR only. |
|
706 |
+ * Set flags accordingly. |
|
707 |
+ */ |
|
708 |
+ avctx->coded_frame->reference = 0; |
|
709 |
+ avctx->coded_frame->key_frame = 1; |
|
710 |
+ avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; |
|
711 |
+ |
|
712 |
+ pkt->size = bytestream2_tell_p(&pb); |
|
713 |
+ pkt->flags |= AV_PKT_FLAG_KEY; |
|
714 |
+ |
|
715 |
+ /* Packet should be done */ |
|
716 |
+ *got_packet = 1; |
|
717 |
+ |
|
718 |
+ return 0; |
|
719 |
+} |
|
720 |
+ |
|
721 |
+AVCodec ff_utvideo_encoder = { |
|
722 |
+ .name = "utvideo", |
|
723 |
+ .type = AVMEDIA_TYPE_VIDEO, |
|
724 |
+ .id = CODEC_ID_UTVIDEO, |
|
725 |
+ .priv_data_size = sizeof(UtvideoContext), |
|
726 |
+ .init = utvideo_encode_init, |
|
727 |
+ .encode2 = utvideo_encode_frame, |
|
728 |
+ .close = utvideo_encode_close, |
|
729 |
+ .pix_fmts = (const enum PixelFormat[]) { |
|
730 |
+ PIX_FMT_RGB24, PIX_FMT_RGBA, PIX_FMT_YUV422P, |
|
731 |
+ PIX_FMT_YUV420P, PIX_FMT_NONE |
|
732 |
+ }, |
|
733 |
+ .long_name = NULL_IF_CONFIG_SMALL("Ut Video"), |
|
734 |
+}; |
... | ... |
@@ -24,3 +24,45 @@ fate-utvideo_yuv422_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_ |
24 | 24 |
|
25 | 25 |
FATE_SAMPLES_AVCONV += $(FATE_UTVIDEO) |
26 | 26 |
fate-utvideo: $(FATE_UTVIDEO) |
27 |
+ |
|
28 |
+fate-utvideoenc%: CMD = framemd5 -f image2 -vcodec pgmyuv -i $(TARGET_PATH)/tests/vsynth1/%02d.pgm -vcodec utvideo -f avi ${OPTS} |
|
29 |
+fate-utvideoenc%: tests/vsynth1/00.pgm |
|
30 |
+ |
|
31 |
+FATE_UTVIDEOENC += fate-utvideoenc_rgba_none |
|
32 |
+fate-utvideoenc_rgba_none: OPTS = -pix_fmt rgba -pred 3 |
|
33 |
+ |
|
34 |
+FATE_UTVIDEOENC += fate-utvideoenc_rgba_left |
|
35 |
+fate-utvideoenc_rgba_left: OPTS = -pix_fmt rgba -pred left |
|
36 |
+ |
|
37 |
+FATE_UTVIDEOENC += fate-utvideoenc_rgba_median |
|
38 |
+fate-utvideoenc_rgba_median: OPTS = -pix_fmt rgba -pred median |
|
39 |
+ |
|
40 |
+FATE_UTVIDEOENC += fate-utvideoenc_rgb_none |
|
41 |
+fate-utvideoenc_rgb_none: OPTS = -pix_fmt rgb24 -pred 3 |
|
42 |
+ |
|
43 |
+FATE_UTVIDEOENC += fate-utvideoenc_rgb_left |
|
44 |
+fate-utvideoenc_rgb_left: OPTS = -pix_fmt rgb24 -pred left |
|
45 |
+ |
|
46 |
+FATE_UTVIDEOENC += fate-utvideoenc_rgb_median |
|
47 |
+fate-utvideoenc_rgb_median: OPTS = -pix_fmt rgb24 -pred median |
|
48 |
+ |
|
49 |
+FATE_UTVIDEOENC += fate-utvideoenc_yuv420_none |
|
50 |
+fate-utvideoenc_yuv420_none: OPTS = -pix_fmt yuv420p -pred 3 |
|
51 |
+ |
|
52 |
+FATE_UTVIDEOENC += fate-utvideoenc_yuv420_left |
|
53 |
+fate-utvideoenc_yuv420_left: OPTS = -pix_fmt yuv420p -pred left |
|
54 |
+ |
|
55 |
+FATE_UTVIDEOENC += fate-utvideoenc_yuv420_median |
|
56 |
+fate-utvideoenc_yuv420_median: OPTS = -pix_fmt yuv420p -pred median |
|
57 |
+ |
|
58 |
+FATE_UTVIDEOENC += fate-utvideoenc_yuv422_none |
|
59 |
+fate-utvideoenc_yuv422_none: OPTS = -pix_fmt yuv422p -pred 3 |
|
60 |
+ |
|
61 |
+FATE_UTVIDEOENC += fate-utvideoenc_yuv422_left |
|
62 |
+fate-utvideoenc_yuv422_left: OPTS = -pix_fmt yuv422p -pred left |
|
63 |
+ |
|
64 |
+FATE_UTVIDEOENC += fate-utvideoenc_yuv422_median |
|
65 |
+fate-utvideoenc_yuv422_median: OPTS = -pix_fmt yuv422p -pred median |
|
66 |
+ |
|
67 |
+FATE_AVCONV += $(FATE_UTVIDEOENC) |
|
68 |
+fate-utvideoenc: $(FATE_UTVIDEOENC) |
27 | 69 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 168240, 116019db2e5350536a51e8d7a609c2b9 |
|
2 |
+0, 1, 1, 1, 167868, 0700499b0f8b9b09601b969caa2c2efd |
|
3 |
+0, 2, 2, 1, 169216, 890e18b99ccca7601d1f68efd19e906b |
|
4 |
+0, 3, 3, 1, 168156, b9bf194312e492f1cf3ee624e08bb30a |
|
5 |
+0, 4, 4, 1, 167680, 53383c3fc77f6e35b58525ab2440fe85 |
|
6 |
+0, 5, 5, 1, 168516, 8c7150e8246b8c9a2f1985a0f80d68a7 |
|
7 |
+0, 6, 6, 1, 167712, d46508dad0cf7cd3f7e1aca50a16537b |
|
8 |
+0, 7, 7, 1, 168172, 1b2643b67d0dddc04e65ff1e751b11ba |
|
9 |
+0, 8, 8, 1, 167388, 0104ea69082aac2190a96bbe7971eac7 |
|
10 |
+0, 9, 9, 1, 168300, 6768cdc8383c4abdee474edddaab452b |
|
11 |
+0, 10, 10, 1, 167960, ef3e8ed5dfc2dbdae9ac818b0c9964f7 |
|
12 |
+0, 11, 11, 1, 168024, 98d0fd2d82c43cabc4be25a304aa3e3a |
|
13 |
+0, 12, 12, 1, 166460, db5cf5154a710972d2f2468cf1e5694c |
|
14 |
+0, 13, 13, 1, 167284, 7caf2ab0d10c138a06846680145e18de |
|
15 |
+0, 14, 14, 1, 168788, f7c071cc22bc822cd780df2ae761c98f |
|
16 |
+0, 15, 15, 1, 168312, defc3b454e98c362e155e63765e5e7fe |
|
17 |
+0, 16, 16, 1, 167888, 37713f91a4d342fab759a390eb0e5858 |
|
18 |
+0, 17, 17, 1, 167428, 56c9e1e039ec4ca3bad163c5f7356398 |
|
19 |
+0, 18, 18, 1, 166792, a67cc85635ff5c706c37273c8f6ace48 |
|
20 |
+0, 19, 19, 1, 167220, 797aa3302fa9b865e28ac517beff2fe7 |
|
21 |
+0, 20, 20, 1, 166612, 160d49cb2b549972ed15165221392fe8 |
|
22 |
+0, 21, 21, 1, 166676, fcd0bdcae5b009f34074b56ab566d92f |
|
23 |
+0, 22, 22, 1, 167792, cdc6496a8ca7e41c8f23e56a2f995a07 |
|
24 |
+0, 23, 23, 1, 168040, 0c56322c9cde9e76f3a6a732fdb861bc |
|
25 |
+0, 24, 24, 1, 168656, ed627dd70d9f1335c844ee7a62db29a0 |
|
26 |
+0, 25, 25, 1, 168456, b3282f8f1792206c4fed9101213032da |
|
27 |
+0, 26, 26, 1, 168120, 43b3094cfa9e5985fa447bf25e0a8bcc |
|
28 |
+0, 27, 27, 1, 167480, c1a58fd31844b0fa99a323921c4c3269 |
|
29 |
+0, 28, 28, 1, 165320, b0f33fddd18a2a74177721e8d1cb13e3 |
|
30 |
+0, 29, 29, 1, 165104, 2413e9a95b02a64629cd7ce6d4de799b |
|
31 |
+0, 30, 30, 1, 166604, b17539db5a3f394632f9afadcaeaca38 |
|
32 |
+0, 31, 31, 1, 167500, 178dd023eee970d729089e0172659c27 |
|
33 |
+0, 32, 32, 1, 167264, ff5afb31aff707ded3c472044f685ddc |
|
34 |
+0, 33, 33, 1, 169008, 99edb6139d09310a3fc686e76f982ae9 |
|
35 |
+0, 34, 34, 1, 168108, 66a41bba03235e2a501520198a415a7a |
|
36 |
+0, 35, 35, 1, 168016, 028d708a5fcd6e708a3ae471052f5f00 |
|
37 |
+0, 36, 36, 1, 166984, 585c78a2e01493581dfbb395db7be582 |
|
38 |
+0, 37, 37, 1, 167388, 4ae14a7cb1016a19ff3bfc067797e774 |
|
39 |
+0, 38, 38, 1, 165388, fa0f0cc6c5efcdea4c15033ff104aee1 |
|
40 |
+0, 39, 39, 1, 165524, 868c476a1a007be410b05ba24f9d3efc |
|
41 |
+0, 40, 40, 1, 165784, 4bfbcdcd82bb04c9aaf0a8f192b67d52 |
|
42 |
+0, 41, 41, 1, 166404, 09ff4d32a36dd63b035e2b430b790687 |
|
43 |
+0, 42, 42, 1, 166872, 3ef565aac161a5d9eb91b74496669a68 |
|
44 |
+0, 43, 43, 1, 166772, 1d7e9b7115408887a564bff985e92da3 |
|
45 |
+0, 44, 44, 1, 166588, 48e3e7c6b5f98e206f3837ef163d26ab |
|
46 |
+0, 45, 45, 1, 164396, ff338e650a3475185f03842d7a691680 |
|
47 |
+0, 46, 46, 1, 163504, 21cba98fb1c03ffc149e582a4e70404c |
|
48 |
+0, 47, 47, 1, 164248, f92c93800bff6486f09e170bead7f470 |
|
49 |
+0, 48, 48, 1, 164444, dc04c0e3b86bf42363046a2a56c76c82 |
|
50 |
+0, 49, 49, 1, 163844, 48007251ab2dd2d0228ac9095b190718 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 149240, 7a580af923f79d740391481f44080fb8 |
|
2 |
+0, 1, 1, 1, 148992, 5083a5e7c7ba433a157441aeb93cec33 |
|
3 |
+0, 2, 2, 1, 150648, 05657dc59cf5f9c0b1eb4ec875000cb8 |
|
4 |
+0, 3, 3, 1, 149716, 8a7742db11d0d35f5b575423099b5bd7 |
|
5 |
+0, 4, 4, 1, 149272, f437090e4782d65f65b06eb1d47c9aa0 |
|
6 |
+0, 5, 5, 1, 150044, d8d00cf8ae06b6ca8d30a89e7c9666f8 |
|
7 |
+0, 6, 6, 1, 149532, 4abc60d6ea18bffe28151e0f4549aa95 |
|
8 |
+0, 7, 7, 1, 149316, a12ddb15795b63b7bf1ce8a66fa1815e |
|
9 |
+0, 8, 8, 1, 149516, 3752007da5c2c1963314d35e2d580783 |
|
10 |
+0, 9, 9, 1, 149520, 419534098fa161671528cc77e307cf79 |
|
11 |
+0, 10, 10, 1, 149444, 383a3b79634d6aeecfc7eb0a5a5c9b7b |
|
12 |
+0, 11, 11, 1, 149164, 5a5901882e8b9aa5a6300b7d786c2b16 |
|
13 |
+0, 12, 12, 1, 147996, fe9fb5d4cd97c7ad7f11c87b9f75b0a9 |
|
14 |
+0, 13, 13, 1, 149152, 83e0c36884b91263d2d235fab9a3b3e7 |
|
15 |
+0, 14, 14, 1, 149640, 366bdff8c41cb2f5a90810f719661bcc |
|
16 |
+0, 15, 15, 1, 149600, e72f5f3e18b7a98443094d6e34d5286c |
|
17 |
+0, 16, 16, 1, 148916, a94a62b5647365d13081a6c3398b127d |
|
18 |
+0, 17, 17, 1, 149520, fdbc007fb7443b5bfd388d273413d20b |
|
19 |
+0, 18, 18, 1, 148468, bc4c7b5324fe5658c15e8540dbc7130a |
|
20 |
+0, 19, 19, 1, 148388, e9caa4e18c0bffb07039427d0a98798d |
|
21 |
+0, 20, 20, 1, 147772, 3eb6bde758e13296e61911d6f574a49f |
|
22 |
+0, 21, 21, 1, 148128, 64cc6d5c819d10e725c30fe69ef040ae |
|
23 |
+0, 22, 22, 1, 148200, d5b8a93061a70e55b8b751d3c1a4ac5c |
|
24 |
+0, 23, 23, 1, 149312, ef912e5a3640992dd2948037535b0341 |
|
25 |
+0, 24, 24, 1, 149244, 8df2d35148b9d934f79566cf6371af89 |
|
26 |
+0, 25, 25, 1, 149040, 27f1c2a77ae36fa23bd36ecf4df67fb8 |
|
27 |
+0, 26, 26, 1, 149020, 995370b34bd96cd5004ba5c4d449fd3f |
|
28 |
+0, 27, 27, 1, 148308, b0a7cd8ee1db8fd0d1324450386de11c |
|
29 |
+0, 28, 28, 1, 148016, 6d211a6b4e790e9c46757053782e6713 |
|
30 |
+0, 29, 29, 1, 147324, 730619aa336408d3d5694eb8e3ea2d71 |
|
31 |
+0, 30, 30, 1, 148104, 34c53deccc3be58bdc4cd9c0e3f19918 |
|
32 |
+0, 31, 31, 1, 149004, 710a4724ffac1457b8437f94c8e97b8b |
|
33 |
+0, 32, 32, 1, 148452, be7c947371e8a434233eb7eaeef95c8d |
|
34 |
+0, 33, 33, 1, 149076, 694fc1872869e16aaf176473f2094c52 |
|
35 |
+0, 34, 34, 1, 148952, f35b66ac7f42cbaf849a41536306cb85 |
|
36 |
+0, 35, 35, 1, 149012, 3f5d904d5a8b3d169f8c87f21b712ef6 |
|
37 |
+0, 36, 36, 1, 148464, 363df43764cb27a2d2a16e9246bf2c76 |
|
38 |
+0, 37, 37, 1, 148968, 2e08d0c96fdc99b091ad20c1aed208b6 |
|
39 |
+0, 38, 38, 1, 147744, 15412763aec2d25f9a23de4fa3cf60dc |
|
40 |
+0, 39, 39, 1, 148124, f76679ddeaf18af0ef9563c7b7d86636 |
|
41 |
+0, 40, 40, 1, 147800, 3195234ce043d883252fbe7a01dbe86c |
|
42 |
+0, 41, 41, 1, 148528, dd4b892d143ebd326452f5504d23d794 |
|
43 |
+0, 42, 42, 1, 147752, eb8c442bcc34a8a38e5101c1e00615c9 |
|
44 |
+0, 43, 43, 1, 147832, d834c5e4e0a1ab0a31c13eb7ac40fbc1 |
|
45 |
+0, 44, 44, 1, 148000, 9761129bd0122132d2154a56c2ceec62 |
|
46 |
+0, 45, 45, 1, 147344, 9b76ab62f501f0714076d9f94bb4374a |
|
47 |
+0, 46, 46, 1, 146744, 184298b63c13730635f347eecdb506dd |
|
48 |
+0, 47, 47, 1, 145980, ef4f03747a2a76016fc66df7a32a57b8 |
|
49 |
+0, 48, 48, 1, 146228, e2618fe6c95722d63cbce7ae5021ed16 |
|
50 |
+0, 49, 49, 1, 145756, 9f9187896e840d163ad955c1a37756fe |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 302912, d2964d8013869388b92b546f105a7541 |
|
2 |
+0, 1, 1, 1, 302880, a06917f2dd5905034b78d80b4702ade9 |
|
3 |
+0, 2, 2, 1, 302740, b8af48307700460aed09e61ff43297d8 |
|
4 |
+0, 3, 3, 1, 302784, d8bec7604718716daf04814fb889064d |
|
5 |
+0, 4, 4, 1, 302824, d1f2f9055165254003868dcde305c423 |
|
6 |
+0, 5, 5, 1, 302796, c18722063e9cf19ee8cdcb69266c722a |
|
7 |
+0, 6, 6, 1, 302796, cf00264e1e5f43890b5be16dc2aa0a75 |
|
8 |
+0, 7, 7, 1, 302860, d9b305b43c36ed06fa347e04daa26772 |
|
9 |
+0, 8, 8, 1, 302892, f69c6b0c027ac5f3d7e9e56609b36559 |
|
10 |
+0, 9, 9, 1, 302896, f81634542eb893a8150edfd91168d91e |
|
11 |
+0, 10, 10, 1, 302776, 91509d83dc2c9308d9e29ed2b3c49b44 |
|
12 |
+0, 11, 11, 1, 302792, 7109c49d3c65cdc9afd8f0f3917dc36f |
|
13 |
+0, 12, 12, 1, 302908, db307334fe92965b4500fb7f67ce4ffd |
|
14 |
+0, 13, 13, 1, 302784, d18a2017145423cd7f5880cb44e34c4b |
|
15 |
+0, 14, 14, 1, 302668, 1b2362477600ad99fdcca3bc2167be9e |
|
16 |
+0, 15, 15, 1, 302696, cf38dc4d728a291f6206ee0dc4dec00c |
|
17 |
+0, 16, 16, 1, 302788, d1d7743274cef21e137d9aa512ca1edc |
|
18 |
+0, 17, 17, 1, 302840, 89d46fec602e9ebe4cae55961da71f4c |
|
19 |
+0, 18, 18, 1, 302928, 46e55d9667f21cd14184bad89de32971 |
|
20 |
+0, 19, 19, 1, 302984, 8f25e47871bace8b39a2709f49cef11d |
|
21 |
+0, 20, 20, 1, 302936, 6dff8cb7bb9fe294fcc79a713a983fb1 |
|
22 |
+0, 21, 21, 1, 302980, 26191c78d0e2901404776791397c4f83 |
|
23 |
+0, 22, 22, 1, 302996, 9f414291a8ea4537ac991675034db64b |
|
24 |
+0, 23, 23, 1, 302912, d274f2535d109f9b8601f175fcd858cb |
|
25 |
+0, 24, 24, 1, 302964, 1d70b563670a33267ae2f6644e1c8e95 |
|
26 |
+0, 25, 25, 1, 303028, 9d14b635403c286ca9d60fa700e30888 |
|
27 |
+0, 26, 26, 1, 302988, 8a3a45138a29d38ac70f1fb9f3147c1a |
|
28 |
+0, 27, 27, 1, 303056, 2378954ac18fb9b01feb937b76c08a55 |
|
29 |
+0, 28, 28, 1, 302996, 675d4b6b235c374da450cf00e240185b |
|
30 |
+0, 29, 29, 1, 303072, 77a7205787f1e7cca59dd239f6c0591a |
|
31 |
+0, 30, 30, 1, 303084, 551c987cb8a574f999577a9e630a5df4 |
|
32 |
+0, 31, 31, 1, 303024, 73451fc3927d329fe407def293b5467d |
|
33 |
+0, 32, 32, 1, 302972, 03c69d8fdebeb8c3ba31e99142e68144 |
|
34 |
+0, 33, 33, 1, 302904, 5949ab8ff47e72933e4668cf46a76d95 |
|
35 |
+0, 34, 34, 1, 302828, a9197dd2e0496fce0e8de9950466dc6e |
|
36 |
+0, 35, 35, 1, 302972, 9c8c24df0e0196453f7db3182561879a |
|
37 |
+0, 36, 36, 1, 303052, 849f0f23b6d2e6af74bff2a45b5d8a63 |
|
38 |
+0, 37, 37, 1, 303028, 16acb86039a38dbfac48e2a04a48d9ea |
|
39 |
+0, 38, 38, 1, 303088, eb5336a28c2b99dd6e4e9f90a5fb5d96 |
|
40 |
+0, 39, 39, 1, 303048, 5a637b3e6b7b3c4b7aa58f4ffd8c5e29 |
|
41 |
+0, 40, 40, 1, 303120, f31ef0195ba9c70c5e6dc84ed4e9928a |
|
42 |
+0, 41, 41, 1, 303056, 3f73ef08146c697fcec3aa16805aac92 |
|
43 |
+0, 42, 42, 1, 303092, 89e2ac83290eef0f589d67e3adad2d30 |
|
44 |
+0, 43, 43, 1, 303140, cde3a48e309c3ca6a3843d2d5aaade79 |
|
45 |
+0, 44, 44, 1, 303116, 5456c19ccc38237a09986c962350ef60 |
|
46 |
+0, 45, 45, 1, 303156, 419e78d98541dfd1a9d29a04cf985cf9 |
|
47 |
+0, 46, 46, 1, 303148, 9b7a7559370798cfae2ccb1731cd89c0 |
|
48 |
+0, 47, 47, 1, 303196, d9590fdf48bc3be1a4956fb5da3584dd |
|
49 |
+0, 48, 48, 1, 303256, e6c90aa1753fc7d6b04cfc7e92b53af1 |
|
50 |
+0, 49, 49, 1, 303228, 941f240dc62777aba1792f36b70e1f48 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 181176, da7b045edf219bced5b152791b10c87f |
|
2 |
+0, 1, 1, 1, 180804, b06bd1fe1a00a21efe0df3eabb909c9f |
|
3 |
+0, 2, 2, 1, 182152, 75e86b780b70de0510be70278b8005d7 |
|
4 |
+0, 3, 3, 1, 181092, 70beeae6c87daac962fa67a5ef72f250 |
|
5 |
+0, 4, 4, 1, 180616, b0b8fda4db6828360d67556c8d90ea4f |
|
6 |
+0, 5, 5, 1, 181452, 434daeeac59b17aaa3717ae9e5e5a3d7 |
|
7 |
+0, 6, 6, 1, 180648, c70e591fc050a7d8b88efed67a78c119 |
|
8 |
+0, 7, 7, 1, 181108, a84cd2efe629a710bf8f2118686ec8e3 |
|
9 |
+0, 8, 8, 1, 180324, 9e1559a606140bbad9d268d1453e26f8 |
|
10 |
+0, 9, 9, 1, 181236, 8daa9a96816335c58b88223d8c54f4a0 |
|
11 |
+0, 10, 10, 1, 180896, 5566aaf2bfb0a5f8601abb55496b0373 |
|
12 |
+0, 11, 11, 1, 180960, 67eb48372ea714bfb6b962029fa67328 |
|
13 |
+0, 12, 12, 1, 179396, 49bc20f86bd85dddea8085238ca3221a |
|
14 |
+0, 13, 13, 1, 180220, aa783168cf3753dcc68d90155505081e |
|
15 |
+0, 14, 14, 1, 181724, cef5a732a3308f7803d36d06e22f2490 |
|
16 |
+0, 15, 15, 1, 181248, a5bd0e1d9ea5130b35d084929fcb3f1d |
|
17 |
+0, 16, 16, 1, 180824, 7ea8991f802ed2db13f12478b8445d96 |
|
18 |
+0, 17, 17, 1, 180364, f9065f42a52f4485347dfe667101bf3c |
|
19 |
+0, 18, 18, 1, 179728, e88bf6901809ff965b76dad488a6dced |
|
20 |
+0, 19, 19, 1, 180156, f054de2239e20e776663de033608e0c0 |
|
21 |
+0, 20, 20, 1, 179548, a328018fc852bb3f8a0a64b30d051d02 |
|
22 |
+0, 21, 21, 1, 179612, b865fd5fcbe5b6d7ca3e111048ecc3b2 |
|
23 |
+0, 22, 22, 1, 180728, 8a0a4c6933f8b6323426272fb64722de |
|
24 |
+0, 23, 23, 1, 180976, c4a788e3c7b81070013934df31299208 |
|
25 |
+0, 24, 24, 1, 181592, 9fab2972676d67f86ec7b319ffb78e59 |
|
26 |
+0, 25, 25, 1, 181392, 7d762db7b2651f259d32a882a499c156 |
|
27 |
+0, 26, 26, 1, 181056, 1620dc2804ca0d9a48097db7f91bf6bc |
|
28 |
+0, 27, 27, 1, 180416, 62dcb666136de841db99096e7c5fadb0 |
|
29 |
+0, 28, 28, 1, 178256, 27b01db3cf22c2a982b73861d3eb6add |
|
30 |
+0, 29, 29, 1, 178040, ef78cd2d2091c03e90ab3feae0b2adcf |
|
31 |
+0, 30, 30, 1, 179540, f026cc6577c8fd8ec685a45b88b31b62 |
|
32 |
+0, 31, 31, 1, 180436, af692865fb34b1418b756e794a9c1c3b |
|
33 |
+0, 32, 32, 1, 180200, e65b58ef8e13e67a4c0c45086d299818 |
|
34 |
+0, 33, 33, 1, 181944, 6eae7d0bf76bf06da71186671901e698 |
|
35 |
+0, 34, 34, 1, 181044, 740dadcf236ca0af236c09d29b312940 |
|
36 |
+0, 35, 35, 1, 180952, 5badcbb17e97be7b54fa1e9e49f677ed |
|
37 |
+0, 36, 36, 1, 179920, 8827a40f0c1e0b04f6085a7146955e2f |
|
38 |
+0, 37, 37, 1, 180324, 9d42e2532a48c4972cb71ac541c3ea57 |
|
39 |
+0, 38, 38, 1, 178324, 31db217d6e574bf83279288f0b36a628 |
|
40 |
+0, 39, 39, 1, 178460, 8fdc5e7be532e05ddff2e10064113882 |
|
41 |
+0, 40, 40, 1, 178720, 28fdeaf450edd61a5a0f0dbc75aefe99 |
|
42 |
+0, 41, 41, 1, 179340, 2988ec8ce759703ef975c55a22ed3cd4 |
|
43 |
+0, 42, 42, 1, 179808, e27ed3b49dd8c3ef98e3526d9d691b65 |
|
44 |
+0, 43, 43, 1, 179708, 14415299804aa63cb7b262af6869a371 |
|
45 |
+0, 44, 44, 1, 179524, bb75948719d5af9e48543fa0c932f746 |
|
46 |
+0, 45, 45, 1, 177332, b0984e1db78dcc3d44a010444d87cf78 |
|
47 |
+0, 46, 46, 1, 176440, bd57710508310a95ad41cd056b715e12 |
|
48 |
+0, 47, 47, 1, 177184, f81326c0bce9ca0efe7edae7659d0e8b |
|
49 |
+0, 48, 48, 1, 177380, edf7f2fd74be9992edda43ea87e524b7 |
|
50 |
+0, 49, 49, 1, 176780, 8902e18670264eec47294ffde934fcb9 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 162176, 56d4b5bfb2f08741c34ebb18dc5baf13 |
|
2 |
+0, 1, 1, 1, 161928, ac877a6e1afeb6813e5b79110dd5b847 |
|
3 |
+0, 2, 2, 1, 163584, 0559b537142474bdebc6fa2af9cca544 |
|
4 |
+0, 3, 3, 1, 162652, 3c36b59df75490a091035dfd6ebcbe01 |
|
5 |
+0, 4, 4, 1, 162208, d411c2aacdbdb828dae6bcd522a8b5d3 |
|
6 |
+0, 5, 5, 1, 162980, 658724afc8be5ceff75cb308a99267cb |
|
7 |
+0, 6, 6, 1, 162468, 9dcb4ed413892aae0f3490d9baca4ddd |
|
8 |
+0, 7, 7, 1, 162252, 2bc2f2fa252036ddf8241a0f1956ea8c |
|
9 |
+0, 8, 8, 1, 162452, 4d41518201cb1295aad71df4fb1fedb9 |
|
10 |
+0, 9, 9, 1, 162456, 6811e63d77b8e842c13fba38afd65017 |
|
11 |
+0, 10, 10, 1, 162380, 710437537764369906cdf1858aea9e70 |
|
12 |
+0, 11, 11, 1, 162100, 60d1d475a78e1222a3f116db88d6dc8c |
|
13 |
+0, 12, 12, 1, 160932, d9b8588ab35792e70c51354faea611cc |
|
14 |
+0, 13, 13, 1, 162088, 3d88ee1f80ae7877afc5c142758a9346 |
|
15 |
+0, 14, 14, 1, 162576, e3357aea30458fb86c05d2a9cb5f3c8e |
|
16 |
+0, 15, 15, 1, 162536, 117a4eae0ed02bb6ae32d23e591a3ae4 |
|
17 |
+0, 16, 16, 1, 161852, fa14269ae83e546dbbfa40f1aaf82bc8 |
|
18 |
+0, 17, 17, 1, 162456, 8c40b4e6507f7af04b1cae3848d6cfcc |
|
19 |
+0, 18, 18, 1, 161404, 7211261a35fef4fae67b160eac1eb259 |
|
20 |
+0, 19, 19, 1, 161324, cd634211ef67871bd6860ec005ac0118 |
|
21 |
+0, 20, 20, 1, 160708, 8b65a6f7459670dd8ba5fb01b1344065 |
|
22 |
+0, 21, 21, 1, 161064, 85203e969ec6e8081c7cea4bb65de1cf |
|
23 |
+0, 22, 22, 1, 161136, 296f3621d6b7f630768e5d7437629c42 |
|
24 |
+0, 23, 23, 1, 162248, ce43a1896160c289bbe5d56dafeeebc7 |
|
25 |
+0, 24, 24, 1, 162180, 0411ba4d9bdb8ea145a38214cab93aff |
|
26 |
+0, 25, 25, 1, 161976, e6bb765a977e81afff62aab1a1a2ca2f |
|
27 |
+0, 26, 26, 1, 161956, 8528eee65853c2e7298eb9e3c6ca9fa2 |
|
28 |
+0, 27, 27, 1, 161244, 332fa087a6ceceb610f3895ca5d81e4c |
|
29 |
+0, 28, 28, 1, 160952, 4f3b0b92e63bdd0fd3f102e968e6f432 |
|
30 |
+0, 29, 29, 1, 160260, dd2de3bce5b80161547e33a748ce6b6a |
|
31 |
+0, 30, 30, 1, 161040, 1306d4826a20d22810f19579e93d0f63 |
|
32 |
+0, 31, 31, 1, 161940, 1724203fd332573e778624d61c3251b0 |
|
33 |
+0, 32, 32, 1, 161388, da336f3865edf7e54ae14ca6d01de859 |
|
34 |
+0, 33, 33, 1, 162012, 2a04855ce96edec00e1860722e0f23a2 |
|
35 |
+0, 34, 34, 1, 161888, 4e525c0ff2ddfe1dd74f655037c52f39 |
|
36 |
+0, 35, 35, 1, 161948, 4a4723b617c8b142a3d9a1b30bf0c99c |
|
37 |
+0, 36, 36, 1, 161400, a8250f7d6da6e7eb91c5b042679737e2 |
|
38 |
+0, 37, 37, 1, 161904, 15f4274bbaaa517865d0e212a03ee5fa |
|
39 |
+0, 38, 38, 1, 160680, f7ee2864aa4c1c555fe0176b1b886294 |
|
40 |
+0, 39, 39, 1, 161060, 0f9eb1b9a798fe070d5d5b1587106e12 |
|
41 |
+0, 40, 40, 1, 160736, 988f20899af28deb7187cb89268fac7a |
|
42 |
+0, 41, 41, 1, 161464, c279f41499a76c4548200859a3990d8b |
|
43 |
+0, 42, 42, 1, 160688, 6d730f0c2a195845050af864af9f6bf1 |
|
44 |
+0, 43, 43, 1, 160768, ae1a3ad132c3ad269ca156d4948df74e |
|
45 |
+0, 44, 44, 1, 160936, 32d6264955012575fad51675ef40b72b |
|
46 |
+0, 45, 45, 1, 160280, aabff2df269f802b05d07c2bdcd7deae |
|
47 |
+0, 46, 46, 1, 159680, 57f2bf1bca662fd2652dc9a04b883295 |
|
48 |
+0, 47, 47, 1, 158916, 5dfd2f6a29c73972d7f7431bc4e7f099 |
|
49 |
+0, 48, 48, 1, 159164, 1eeee6293474fc26cefad5cb2174d088 |
|
50 |
+0, 49, 49, 1, 158692, 56cee1ab036ccdfc9de75475d31fc221 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 303172, abd9a3e31bc4b3c4103eb95e21dd74e6 |
|
2 |
+0, 1, 1, 1, 303140, 29e62ca01ba6520da8c35442ddfa7bec |
|
3 |
+0, 2, 2, 1, 303000, 03bc2de7e91ef1e929c4032a1469465f |
|
4 |
+0, 3, 3, 1, 303044, d7316b5074897ceb5861de482006ec07 |
|
5 |
+0, 4, 4, 1, 303084, 8a29268305ef904301658ec2664241c7 |
|
6 |
+0, 5, 5, 1, 303056, 975dd2ac1e4b6dcd2a909889bac98604 |
|
7 |
+0, 6, 6, 1, 303056, b3ccb6e7a35e44616dc246b747edcb23 |
|
8 |
+0, 7, 7, 1, 303120, 593e11ab37e42cf285f9a13bf671b60e |
|
9 |
+0, 8, 8, 1, 303152, 542aeb683f988532116f29fb3cc0a41c |
|
10 |
+0, 9, 9, 1, 303156, f42a3e67219288391cdd131c12c2da87 |
|
11 |
+0, 10, 10, 1, 303036, a37840b759223d8d7e18902fb6073247 |
|
12 |
+0, 11, 11, 1, 303052, bbb27328a3d8949923daaa0b5ed28b3d |
|
13 |
+0, 12, 12, 1, 303168, 522b1e74feb75bd7c4a71e5d85a3fda2 |
|
14 |
+0, 13, 13, 1, 303044, 961add62cf8853b41d281164344716be |
|
15 |
+0, 14, 14, 1, 302928, 01b5005db00eb6dde2d8231e797ab40d |
|
16 |
+0, 15, 15, 1, 302956, 6d448f007b545f370d2dffff0fb57e00 |
|
17 |
+0, 16, 16, 1, 303048, 942ec6895f66b5f08ee6cdc5604641ad |
|
18 |
+0, 17, 17, 1, 303100, d83c9630bedd853cac07e26b6f99f77d |
|
19 |
+0, 18, 18, 1, 303188, 6b9a7a78b71e64ed9a6c33a844387db4 |
|
20 |
+0, 19, 19, 1, 303244, bfa627071fd9be90f752d44a933aa89b |
|
21 |
+0, 20, 20, 1, 303196, b1ec566949ac10d73bc16b3025cbeae4 |
|
22 |
+0, 21, 21, 1, 303240, d63e8b323bcff8a00cf7cbe99dc35a7f |
|
23 |
+0, 22, 22, 1, 303256, 75fd6c994639c9e135d5030f31d8b21d |
|
24 |
+0, 23, 23, 1, 303172, ac0e8390b59c639daba597c1b61fd6cb |
|
25 |
+0, 24, 24, 1, 303224, 507bbfb7401ad63ddf318ef152615873 |
|
26 |
+0, 25, 25, 1, 303288, 5f223867377e295e954407632ccddcbb |
|
27 |
+0, 26, 26, 1, 303248, 14c1be3751f3e05894e286e870f9d8ce |
|
28 |
+0, 27, 27, 1, 303316, 9d924c4c4603ac5d9c2659f13cbcf928 |
|
29 |
+0, 28, 28, 1, 303256, c05f5d99182899aefb57e914e336e0ba |
|
30 |
+0, 29, 29, 1, 303332, 41a65ae85522875f582de0487b0afab0 |
|
31 |
+0, 30, 30, 1, 303344, 749dc30e61b9d5a179c3513b5e6ca052 |
|
32 |
+0, 31, 31, 1, 303284, 958be38d742fb0c5fce50a50bcbe91e2 |
|
33 |
+0, 32, 32, 1, 303232, df178e2c1819c832d9a468e22f0d6bed |
|
34 |
+0, 33, 33, 1, 303164, db6061112448b9b29c84e9c045561dde |
|
35 |
+0, 34, 34, 1, 303088, c3e0f93fd01155c0d4671a24ba82e4c3 |
|
36 |
+0, 35, 35, 1, 303232, 5b2254a77fbbd0066fcacf1593c92f8f |
|
37 |
+0, 36, 36, 1, 303312, ed9c65e2d573a7491b964d8cd160df9c |
|
38 |
+0, 37, 37, 1, 303288, 9cf8fa422d4fc4e458cab411614c4e47 |
|
39 |
+0, 38, 38, 1, 303348, 9e00fe9b2003d28d97c3c766d6eaf6b6 |
|
40 |
+0, 39, 39, 1, 303308, 4abeab3a986bcaa2cdc6a3898fb7aea0 |
|
41 |
+0, 40, 40, 1, 303380, 4fefa9101b72a398a411348a5ac0f398 |
|
42 |
+0, 41, 41, 1, 303316, cbc28418d47be7ac8f7d3922cfd382a9 |
|
43 |
+0, 42, 42, 1, 303352, e365776166badae59207351c5302c4ee |
|
44 |
+0, 43, 43, 1, 303400, 7d207922a9ff4a64c9fc08d32d53541e |
|
45 |
+0, 44, 44, 1, 303376, fa84592162246745c77a528301f30532 |
|
46 |
+0, 45, 45, 1, 303416, 29013e5e5ef8a0f5de63f8946386eeed |
|
47 |
+0, 46, 46, 1, 303408, e56901bf9b5559ba91105fe6f388ea41 |
|
48 |
+0, 47, 47, 1, 303456, 12958be8a6f6beadd9b94db6d4295b6c |
|
49 |
+0, 48, 48, 1, 303516, bf8175a090ee88158f26a3eaff0ae79c |
|
50 |
+0, 49, 49, 1, 303488, 964be87620c228652924bfd68faa25d9 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 59820, db20782033a18141a292da3f1a1c1782 |
|
2 |
+0, 1, 1, 1, 60040, c2f90e3de0c305ab8aac2530e3cd0e41 |
|
3 |
+0, 2, 2, 1, 61072, 97b0337a4185ef9d8e2533649860ad9a |
|
4 |
+0, 3, 3, 1, 59680, 876d24900ef83e7958c9a1e54c82f330 |
|
5 |
+0, 4, 4, 1, 58620, 7732915d2a50f38951d46e36dcd49236 |
|
6 |
+0, 5, 5, 1, 60276, 343ef35f003da592451cab1ffbf158aa |
|
7 |
+0, 6, 6, 1, 60504, 6823f1ef02f27719bb602911aa8caab5 |
|
8 |
+0, 7, 7, 1, 59916, 5f9ce306dc27d84d1af6d378b385c715 |
|
9 |
+0, 8, 8, 1, 60104, bac83cb16811318ad602ff391fdc94c7 |
|
10 |
+0, 9, 9, 1, 60352, bbd85ee4ccaad1b30b74d9edd1916291 |
|
11 |
+0, 10, 10, 1, 60324, 950230449f907a0615139fe2e1033a47 |
|
12 |
+0, 11, 11, 1, 60312, 8ba4355ecf4d738524bd331b98e87af7 |
|
13 |
+0, 12, 12, 1, 59196, 1efcac9ee097b0e027cc4e9d9d61037c |
|
14 |
+0, 13, 13, 1, 59684, 9815ca06f7a99fb648f8f2856441517f |
|
15 |
+0, 14, 14, 1, 61028, e4d684a1106cf78cd19ed87bd7ff7bab |
|
16 |
+0, 15, 15, 1, 61116, 60f20615fb500d1baf9b1d07aa0f62f4 |
|
17 |
+0, 16, 16, 1, 60096, 35bc9f5e7f8a34c4221840f556d99df8 |
|
18 |
+0, 17, 17, 1, 59900, c8f756e698eeff9b55d83319f96865ce |
|
19 |
+0, 18, 18, 1, 59424, 3ac4bb99ded21039ec65b1959c27347e |
|
20 |
+0, 19, 19, 1, 59100, ff576160ae91bd8466f6d33b5750cce9 |
|
21 |
+0, 20, 20, 1, 58768, 86ed0e0c1a0f23ee6f3beabd0cc5691d |
|
22 |
+0, 21, 21, 1, 58604, c0674d3c5973ff503e736a984326b42d |
|
23 |
+0, 22, 22, 1, 58984, ec47ecc40d18b5e5216572db7aca4399 |
|
24 |
+0, 23, 23, 1, 59724, 119c234e452012e4475d09698e859dbc |
|
25 |
+0, 24, 24, 1, 60688, 6720b72beefcdaa5355a68b763b8c7ca |
|
26 |
+0, 25, 25, 1, 59768, 2dc4e643f97f9123842836df17a165ce |
|
27 |
+0, 26, 26, 1, 59116, 3660544cdd5c0424578aa2cf6edc93d5 |
|
28 |
+0, 27, 27, 1, 58776, 465d3d35793fd088644746fc2b941a3c |
|
29 |
+0, 28, 28, 1, 56948, c452face29e359c118cb206b8a99330e |
|
30 |
+0, 29, 29, 1, 56984, d8c15040ca27d8cbf5e0f4a9464de289 |
|
31 |
+0, 30, 30, 1, 58172, 930839ebaa292a9f3348da3ba58a8c1f |
|
32 |
+0, 31, 31, 1, 59008, bb9d062bf494bc1d4a0056dd8790bb25 |
|
33 |
+0, 32, 32, 1, 59568, e3f0f969063c614f7fefbc0269c4c029 |
|
34 |
+0, 33, 33, 1, 61276, f2e98cab7a320a9748c943910d0eda1d |
|
35 |
+0, 34, 34, 1, 60056, 6875b10061cb1c303a18f186d65247ed |
|
36 |
+0, 35, 35, 1, 59272, ad3f45ed83560479904c6395f857c95b |
|
37 |
+0, 36, 36, 1, 58592, eca4f8faa40a737f56f6e492d98845c1 |
|
38 |
+0, 37, 37, 1, 58764, fa68a3723ba5b965532768b41dc73b60 |
|
39 |
+0, 38, 38, 1, 58300, 741a2ae174d721e3f3c0d13e54132095 |
|
40 |
+0, 39, 39, 1, 58260, 3546ddc2620a4c9fa415c0252a5eb9a4 |
|
41 |
+0, 40, 40, 1, 57324, f11c6053a5448e9b4830ef4fe833e5de |
|
42 |
+0, 41, 41, 1, 58988, 6ae00a0b48f5ecdafcfd958684a21bcb |
|
43 |
+0, 42, 42, 1, 58828, 6239ee212ca7decde8ad4cb304f0f786 |
|
44 |
+0, 43, 43, 1, 58736, 279226528c101b94f4e458151e7f5383 |
|
45 |
+0, 44, 44, 1, 58160, 2e8427fd4f232a7798488dfbbbc93db0 |
|
46 |
+0, 45, 45, 1, 56796, fab0929df1bfa6d4f09d962defaa58e7 |
|
47 |
+0, 46, 46, 1, 55932, 71da16ee5673bdbc5b69f01da23725d3 |
|
48 |
+0, 47, 47, 1, 56368, 20a7d362adb0f920f792106d034630fe |
|
49 |
+0, 48, 48, 1, 56424, ba44ca273348efefafb5e73df81e26e9 |
|
50 |
+0, 49, 49, 1, 55508, e6df309da7552a2676e82f1f4644a694 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 62916, e8443c85edaa534618869eb50a54d8ee |
|
2 |
+0, 1, 1, 1, 62856, 0b9504992a19ffbe5a1f12d823a15f0f |
|
3 |
+0, 2, 2, 1, 64112, 609f1d6cfd57fc87565f3078c48c06f0 |
|
4 |
+0, 3, 3, 1, 62748, e57217dc1de96a6c9494ceea126e71a1 |
|
5 |
+0, 4, 4, 1, 61696, d3bba27c92b9cc4503274dffdcb7de3e |
|
6 |
+0, 5, 5, 1, 63320, f84c26950c6aa2a29af17a923723ea18 |
|
7 |
+0, 6, 6, 1, 63556, 2f2b60577616ea085b77b0154b8eb935 |
|
8 |
+0, 7, 7, 1, 62812, c2cd5836f6ea3bcbf5affdfb623e1aab |
|
9 |
+0, 8, 8, 1, 63204, 010dd4c0a5681507f96502abfe1a8b55 |
|
10 |
+0, 9, 9, 1, 63516, 69b945a7afd1efad7c473c1113f66c5f |
|
11 |
+0, 10, 10, 1, 63356, 05c2acb737b75e96d757fbd4270d9109 |
|
12 |
+0, 11, 11, 1, 63364, f63b1184912c6f25fce3f5fd166fc90c |
|
13 |
+0, 12, 12, 1, 62416, 3bb6161920400a4535188103e5ee9b64 |
|
14 |
+0, 13, 13, 1, 62980, 6482cec5429083c3759588a2d81c2dc8 |
|
15 |
+0, 14, 14, 1, 63964, 8567a41bc0e6a6acef2c5b9991a370da |
|
16 |
+0, 15, 15, 1, 64044, a80fc046d821bb7d3b1d0732b5528a0d |
|
17 |
+0, 16, 16, 1, 62976, 623d43978c0255d7ad94dbbb08911c74 |
|
18 |
+0, 17, 17, 1, 63084, 1459781283da8935125776f157db1fc9 |
|
19 |
+0, 18, 18, 1, 62436, e9c751f7690590affd7e85775fe21fca |
|
20 |
+0, 19, 19, 1, 62168, 948822a3568448032d2d0742031c6a33 |
|
21 |
+0, 20, 20, 1, 61724, 724e7f5384f8a9c7a03cba49abc1bef1 |
|
22 |
+0, 21, 21, 1, 61736, 3b0a781f947af472439852fd70d7e235 |
|
23 |
+0, 22, 22, 1, 62000, 0e41647e42cecc7644a42e3d96f34cfb |
|
24 |
+0, 23, 23, 1, 62848, 1fc1813e6b44d573f3327533c161a262 |
|
25 |
+0, 24, 24, 1, 63504, 96c17ee6abc37fa6db608716d02b8ac7 |
|
26 |
+0, 25, 25, 1, 62732, 2cbeaaddd16d4686a3abdfaba7309107 |
|
27 |
+0, 26, 26, 1, 62288, b7263b7119853aee434290fb3cd30a16 |
|
28 |
+0, 27, 27, 1, 61788, e915b09f59360c1ffb92c2b80499e020 |
|
29 |
+0, 28, 28, 1, 60272, 0aab9182c5fb047344bdae541fb1befb |
|
30 |
+0, 29, 29, 1, 60268, bc1bf979670850c37ab31e329dd909a6 |
|
31 |
+0, 30, 30, 1, 61268, 74a62d3c1363ea38d2a8687ac39a4112 |
|
32 |
+0, 31, 31, 1, 62264, 5b689d5835044b1582f664c1a3c3f336 |
|
33 |
+0, 32, 32, 1, 62668, 10638908ec2b59e0b75168ed7cce4141 |
|
34 |
+0, 33, 33, 1, 63864, 78bac64552f0a2450fc87fe8153a6774 |
|
35 |
+0, 34, 34, 1, 63032, befb82196b484ec3bb9d0eb57beb3c42 |
|
36 |
+0, 35, 35, 1, 62512, aea5110ce91111c9ce93865a82134125 |
|
37 |
+0, 36, 36, 1, 61772, 2744a404a3448db9db6214c688b4ed9f |
|
38 |
+0, 37, 37, 1, 62044, c712fbf903d575fd4adc926470f99799 |
|
39 |
+0, 38, 38, 1, 61780, 97664d4ecf4492e0b8aa3ca025730158 |
|
40 |
+0, 39, 39, 1, 61724, 4b89a0cb4f99398e412eb4c4b8268fad |
|
41 |
+0, 40, 40, 1, 60560, db2de1312d493917ebd805972a0d0086 |
|
42 |
+0, 41, 41, 1, 62284, b85ab454e9599ca9b52fc4e3ad2faaec |
|
43 |
+0, 42, 42, 1, 61864, ae717317d753d6334d317abff4c51491 |
|
44 |
+0, 43, 43, 1, 61728, 70d6c4c68a112fde735195c5177123c8 |
|
45 |
+0, 44, 44, 1, 61252, 14b9a9e1686a1787991dfd40ed871184 |
|
46 |
+0, 45, 45, 1, 60224, ad1094331e5b2c27381e4e1781baa85c |
|
47 |
+0, 46, 46, 1, 59416, a7b2ef933eaf0c8706bcf1f1f06dc01e |
|
48 |
+0, 47, 47, 1, 59656, 89ff0f1c3ded6aa335f9c3ee66dead8e |
|
49 |
+0, 48, 48, 1, 59616, 5fc6c44004562ed74b536374059a8bdd |
|
50 |
+0, 49, 49, 1, 58836, feb32d803459a18e487f87c02ec1bf5c |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 144516, 8b4c8d3ae74da0306cbb7c6709f16ec5 |
|
2 |
+0, 1, 1, 1, 144504, 041bcfd819fec93241baa2797e2c97c2 |
|
3 |
+0, 2, 2, 1, 144384, 9a3efab6db020060e877bcd68f6153b5 |
|
4 |
+0, 3, 3, 1, 144428, d650148e1b29eaf2ada94bad59214b06 |
|
5 |
+0, 4, 4, 1, 144596, 8a070f1c074181d3ebc8ff93d8218c91 |
|
6 |
+0, 5, 5, 1, 144456, d53157d4f6d4c97452061b05e9bd4589 |
|
7 |
+0, 6, 6, 1, 144424, fc15bb77ea351dcb8790f6a228d9a899 |
|
8 |
+0, 7, 7, 1, 144416, 36d9f2deea7d96c8c694a0464fbfb6f6 |
|
9 |
+0, 8, 8, 1, 144328, 07850891af07fd9491b7d4957309c59a |
|
10 |
+0, 9, 9, 1, 144328, 98ec846ba6a928f1f8feaceffdc2ca47 |
|
11 |
+0, 10, 10, 1, 144252, eecbc81aeef72a557681fff3ade0e1ea |
|
12 |
+0, 11, 11, 1, 144176, 716f45f97fbbee271c756b51c1442a04 |
|
13 |
+0, 12, 12, 1, 144460, 4b53f968b67f0a3fcc751551685dc616 |
|
14 |
+0, 13, 13, 1, 144320, a0989eba4abc67fc3f97286b5ebb6b6f |
|
15 |
+0, 14, 14, 1, 144256, b565b531adde9de04ac8dd18441f4b10 |
|
16 |
+0, 15, 15, 1, 144240, 93866939e1799cc7a638e684d583c3fc |
|
17 |
+0, 16, 16, 1, 144320, 6289947dfb7c1c56f7f38c293325b08d |
|
18 |
+0, 17, 17, 1, 144360, d348dba72b01e64687d9772c6e408f16 |
|
19 |
+0, 18, 18, 1, 144356, a7285a69d3351c0ff37fc4e052e4445e |
|
20 |
+0, 19, 19, 1, 144368, 6fc446cf8455acec4422dc87c9c3fd9a |
|
21 |
+0, 20, 20, 1, 144388, 54d73f606e23d78675cf505a2e877e2f |
|
22 |
+0, 21, 21, 1, 144424, 2d55f4fc58a611608c814bf624671103 |
|
23 |
+0, 22, 22, 1, 144352, ccd87aa111216071adba2ac6867e5a70 |
|
24 |
+0, 23, 23, 1, 144384, 5a159db181501aafac455eb6ec37645b |
|
25 |
+0, 24, 24, 1, 144384, 0cd8523c88838fb4e59200d324206fc5 |
|
26 |
+0, 25, 25, 1, 144328, 7a537ae88e6b91ee637415fc1bdfdfb3 |
|
27 |
+0, 26, 26, 1, 144416, 2beb77ab1ec30d463442ba1b0b995a22 |
|
28 |
+0, 27, 27, 1, 144524, 032209c413e2906cea0ac1f229e731b0 |
|
29 |
+0, 28, 28, 1, 144680, 370581756f4df5ecb7127d9bad3f219d |
|
30 |
+0, 29, 29, 1, 144656, b43f514332e63452f08cfcecca2c2820 |
|
31 |
+0, 30, 30, 1, 144500, 8debbbdf18df1a82161356f93aa5da22 |
|
32 |
+0, 31, 31, 1, 144504, 04b1d817b10d4529d0108311e131a395 |
|
33 |
+0, 32, 32, 1, 144380, f64c22d9b822b2b7744ed17dc93c0fea |
|
34 |
+0, 33, 33, 1, 144176, b7fe2a1d51921876dc3294a28a8b73f4 |
|
35 |
+0, 34, 34, 1, 144188, bdbaf871cf4f0f9762d487719bd5d70d |
|
36 |
+0, 35, 35, 1, 144356, b90c993423632180fcc924fb687a6e2b |
|
37 |
+0, 36, 36, 1, 144556, 2d88e31846cdb41ab346dd94fc473854 |
|
38 |
+0, 37, 37, 1, 144524, 95b4f8749ee5dbeda91c0e650b13c250 |
|
39 |
+0, 38, 38, 1, 144540, c34b4aa099ec50f3f10d52670a8e3d2e |
|
40 |
+0, 39, 39, 1, 144460, a4f79bdebaed29910d148293c6909766 |
|
41 |
+0, 40, 40, 1, 144540, c359072ba35fb124eb6da7a74e7d746b |
|
42 |
+0, 41, 41, 1, 144356, 6c759d3621208fe60018d0bac631fbe3 |
|
43 |
+0, 42, 42, 1, 144340, 421a7417934af7f46c121c45b7ee9d28 |
|
44 |
+0, 43, 43, 1, 144436, 7954efe1687e9d823018aef879ac5958 |
|
45 |
+0, 44, 44, 1, 144488, 338bfdc6ac006a086c19ba256226d4f8 |
|
46 |
+0, 45, 45, 1, 144604, ff31f6f7706968bb150c98fd17ce59ac |
|
47 |
+0, 46, 46, 1, 144600, a532db975d958b0b17406b3e7cae78a5 |
|
48 |
+0, 47, 47, 1, 144520, b1c007e9f754c2ddf039f3d4767cdcb1 |
|
49 |
+0, 48, 48, 1, 144472, a03290fb08b8b054f18fee2209f5bd13 |
|
50 |
+0, 49, 49, 1, 144508, 7d9eda64f4fc11c95dcd63a1130cb5ab |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 93168, 083b68ac10646d425382cd3aed5d0ef0 |
|
2 |
+0, 1, 1, 1, 93400, f8d2b0fed320270c980140d187d01a25 |
|
3 |
+0, 2, 2, 1, 94536, f66ff5cccd63a468feb84aa22dae1c7c |
|
4 |
+0, 3, 3, 1, 92928, 255ea0d934558adc2e2637bddb1284cf |
|
5 |
+0, 4, 4, 1, 91800, 864d823c5885003e72f41a869c74d769 |
|
6 |
+0, 5, 5, 1, 93468, c6bfb70c03a7cfb4ec09acf2d7ec4f91 |
|
7 |
+0, 6, 6, 1, 93460, 6a5834ca48a2707e456d8c9c67b2cebb |
|
8 |
+0, 7, 7, 1, 93132, 2c3968dc6af9917bee1846e1c85c5e99 |
|
9 |
+0, 8, 8, 1, 93252, a6739a7d07fd86f135c79e271da1789c |
|
10 |
+0, 9, 9, 1, 93580, 8b587ed5fc102e2a0fff55674b1ada23 |
|
11 |
+0, 10, 10, 1, 93548, 4a87d1f0f5a1c3047aa77fc6d10cb6d1 |
|
12 |
+0, 11, 11, 1, 93520, 520bfaebdf5d972dae3671626374bed4 |
|
13 |
+0, 12, 12, 1, 92168, cc7c57ef93047aa13cf3fc5872564563 |
|
14 |
+0, 13, 13, 1, 92860, 8851d9930079a406d9cba89ce00a7feb |
|
15 |
+0, 14, 14, 1, 94380, 2eb1d9ef63a0e74487f36f3e97bdf291 |
|
16 |
+0, 15, 15, 1, 94392, 2c9e589c3ccece6541193b7e61bf28d9 |
|
17 |
+0, 16, 16, 1, 93360, e138b833f6af0d0e189e8c3879af4cdd |
|
18 |
+0, 17, 17, 1, 93108, 597e4c457845667e553c96b02acc40c3 |
|
19 |
+0, 18, 18, 1, 92568, 1623855c558e4b779bada7149adcb752 |
|
20 |
+0, 19, 19, 1, 92232, 78666f67c9b6eeff682f5ebf2e2b5145 |
|
21 |
+0, 20, 20, 1, 91696, aba549ebc0337df1aa5708cde9c4650d |
|
22 |
+0, 21, 21, 1, 91688, cc7b65f321a50e117168b0be6a2c4a0f |
|
23 |
+0, 22, 22, 1, 92164, 29b235028ca0bf6d9b752069529e2105 |
|
24 |
+0, 23, 23, 1, 92812, a23ca4b1b02965afc8cddf4b6022e9c1 |
|
25 |
+0, 24, 24, 1, 93960, afc0e5e4d45f9af68555cfff9e7f2e5d |
|
26 |
+0, 25, 25, 1, 92892, 16d1afc5c8aa8b3b55e52e91e5baed53 |
|
27 |
+0, 26, 26, 1, 92248, a4dd3afd173d419eaec5f9632e64da0f |
|
28 |
+0, 27, 27, 1, 91864, 614063fe03b92352d05d746dcabbbd10 |
|
29 |
+0, 28, 28, 1, 89756, 5a963cfeabc03d1409533bf2e5dd700b |
|
30 |
+0, 29, 29, 1, 89812, f4fea21c34be3e85ba0790ef1e992214 |
|
31 |
+0, 30, 30, 1, 91184, 7aaad112ebb7fa15612fa63c8b313f80 |
|
32 |
+0, 31, 31, 1, 92076, de3c4aefe9c84b73b9c9494c09a0b22c |
|
33 |
+0, 32, 32, 1, 92532, 4f445ee8eeaf323a9ff012a05ca1d3e2 |
|
34 |
+0, 33, 33, 1, 94572, 00cd8ab5abe5faa6cf59e54f3871a242 |
|
35 |
+0, 34, 34, 1, 93368, a303dd519e8ff023f488e4e2ee33e256 |
|
36 |
+0, 35, 35, 1, 92420, efce365314ac4d9e40959de0fc6fc01b |
|
37 |
+0, 36, 36, 1, 91696, bb00659a54d8ded77615403962765238 |
|
38 |
+0, 37, 37, 1, 91912, b0e97a8ef2c73cd3d3b6a2d0bf08a1df |
|
39 |
+0, 38, 38, 1, 91080, ff5e3be417b46de0bd9af03fb0ac7429 |
|
40 |
+0, 39, 39, 1, 91124, 9bca613b7f5a6543b63ad15c2198c037 |
|
41 |
+0, 40, 40, 1, 90188, 89b0ca054eead42930b946f7199b4fba |
|
42 |
+0, 41, 41, 1, 91888, eda5dc80817de04c2528872e773bf3a9 |
|
43 |
+0, 42, 42, 1, 91832, eaea94320b6a85179a63b6330663d439 |
|
44 |
+0, 43, 43, 1, 91760, 412fca7fd02727857d4440cec3d4c0df |
|
45 |
+0, 44, 44, 1, 91108, 9718c1bf512ee2be617bbc526211e8e0 |
|
46 |
+0, 45, 45, 1, 89544, b225acdf63a0183d00cd1f04ec0e49c9 |
|
47 |
+0, 46, 46, 1, 88544, 4ed88cdc92c56f872e5e696fb4da6f0d |
|
48 |
+0, 47, 47, 1, 88960, 8b907526f25008a30e5c333867a21f54 |
|
49 |
+0, 48, 48, 1, 89068, 3bc4c3f7cb75befba57895b6c9e1d64e |
|
50 |
+0, 49, 49, 1, 88012, 90132fa682959e1e3a1484b174cb2041 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 90796, f90f29632eceac669132286385798866 |
|
2 |
+0, 1, 1, 1, 90652, 62890a83da5b9226ff197a0508d0db21 |
|
3 |
+0, 2, 2, 1, 91856, 815baaed2e42f9bf201f0b4630f265b9 |
|
4 |
+0, 3, 3, 1, 90572, 5e94b63fea1cb60f32f66a23ea97ea4d |
|
5 |
+0, 4, 4, 1, 89580, ec8d444349c59dfbafd57095d0cab03a |
|
6 |
+0, 5, 5, 1, 91148, 51be2db33b11859938c3162b02d2b183 |
|
7 |
+0, 6, 6, 1, 91212, 32df9c063904005a6c5a3a91b2e57b0d |
|
8 |
+0, 7, 7, 1, 90376, 9959a40ad11a0a7e6f98a3bb2e1842cd |
|
9 |
+0, 8, 8, 1, 90856, d03fa2bf67361ae27167ca61e0fa37da |
|
10 |
+0, 9, 9, 1, 91356, ea2b8edf132d0492d6241f655a291a0c |
|
11 |
+0, 10, 10, 1, 91032, 6204ddfa158037ee362920176597d85e |
|
12 |
+0, 11, 11, 1, 91004, d210d0cc04e423e59fac9aaaf9bf01bd |
|
13 |
+0, 12, 12, 1, 90096, 615dbf6c64f6165902a25970d226feb8 |
|
14 |
+0, 13, 13, 1, 90832, 66858d96fdb0dc8d89f1902591ccc886 |
|
15 |
+0, 14, 14, 1, 91688, 34a7ad1554020c4c78319803b41281d9 |
|
16 |
+0, 15, 15, 1, 91796, fd7cb3faaab8ca700dd0854915f72bb0 |
|
17 |
+0, 16, 16, 1, 90836, 983958df5d66c85194c2e2e7b27cf91b |
|
18 |
+0, 17, 17, 1, 90848, 09d8051c04533059768b75967509c752 |
|
19 |
+0, 18, 18, 1, 90088, cf3fb73f2382063aa76bcdbe00739a9f |
|
20 |
+0, 19, 19, 1, 89892, e6c2ec30ea12db29eedd649aa9a62476 |
|
21 |
+0, 20, 20, 1, 89304, 19603c655f5445bd4dadd4b88e482096 |
|
22 |
+0, 21, 21, 1, 89560, 0e842bf72ce795b37dcd588874913d2b |
|
23 |
+0, 22, 22, 1, 89604, 83320a47a9882645aee67e8d343aee07 |
|
24 |
+0, 23, 23, 1, 90684, c45b3a01ab736a363f4771a277d3bf37 |
|
25 |
+0, 24, 24, 1, 91224, dbaf3f033273748bba13bc3332f399d5 |
|
26 |
+0, 25, 25, 1, 90480, de5b49620f1242f24250721dab315f71 |
|
27 |
+0, 26, 26, 1, 89988, a0d8ff14f468c5281c7bb80524743cbc |
|
28 |
+0, 27, 27, 1, 89636, 68ca298fa61d18c963c0b9610dfb48bf |
|
29 |
+0, 28, 28, 1, 88168, 22128400447fe0fcc9f067e1430e462e |
|
30 |
+0, 29, 29, 1, 88188, 0816840bbd1b2857e99973a69e65c26a |
|
31 |
+0, 30, 30, 1, 89068, bcf924eea0f45a9eeb01a886a154d969 |
|
32 |
+0, 31, 31, 1, 90104, 1b19dd4e4ed22e56b707f63f559174c6 |
|
33 |
+0, 32, 32, 1, 90344, 0142df8c6dfb99108622e8e7c8ebfd6d |
|
34 |
+0, 33, 33, 1, 91348, 031e49bf9dc9e2c9ac6a86ab5bdba307 |
|
35 |
+0, 34, 34, 1, 90740, 5d4428cb9a61a57bfa724e0aea500db1 |
|
36 |
+0, 35, 35, 1, 90204, ad8a5494a7145e13aa3eb811f0af5843 |
|
37 |
+0, 36, 36, 1, 89708, 2421d07a9ed208f993d92c7d1f9c3fac |
|
38 |
+0, 37, 37, 1, 90036, c4edb940ea1f10b716100fde23a5cb08 |
|
39 |
+0, 38, 38, 1, 89560, f6ba26af186ee1c7189603e6335281a8 |
|
40 |
+0, 39, 39, 1, 89464, aa77758a59ab9a7a3952dd9456040a5d |
|
41 |
+0, 40, 40, 1, 88380, 78cd903ba608c770aeec39f13bd44896 |
|
42 |
+0, 41, 41, 1, 89872, 21e9e482d36a30bbff9ad897a2bda3f4 |
|
43 |
+0, 42, 42, 1, 89504, 9149a892a42e065079d614fba1e367c8 |
|
44 |
+0, 43, 43, 1, 89408, b5ed6ff8f7682a71ca2ca2bca5b1dbc0 |
|
45 |
+0, 44, 44, 1, 88916, 712d9669ad046b3993371cfb618c934e |
|
46 |
+0, 45, 45, 1, 87948, 47c9bfa99221085efffe30e7b335beaa |
|
47 |
+0, 46, 46, 1, 87284, 821cc4427f2649322950116caad44e96 |
|
48 |
+0, 47, 47, 1, 87424, 0d072e86818957bc3c40ffeb090dbcd8 |
|
49 |
+0, 48, 48, 1, 87296, 05bfe7d720b225ffc6b09a4ddf6ffa36 |
|
50 |
+0, 49, 49, 1, 86416, 85df53da921ba046d8e1d07349819236 |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,51 @@ |
0 |
+#tb 0: 1/25 |
|
1 |
+0, 0, 0, 1, 191788, ff02a91e03b0a94b37af9ea51ab68242 |
|
2 |
+0, 1, 1, 1, 191808, 655052bb397edc4391f1eb650dc47871 |
|
3 |
+0, 2, 2, 1, 191652, fa6238888b811ede6e9c9f62e70dd0f7 |
|
4 |
+0, 3, 3, 1, 191680, 54d54092523e7930aa4a8f9368512281 |
|
5 |
+0, 4, 4, 1, 191964, 5ef03667afca82f49916ae83e195882a |
|
6 |
+0, 5, 5, 1, 191748, dac12c404963c2e0ae5b48a7fdf73e77 |
|
7 |
+0, 6, 6, 1, 191708, 040941871e8c877f187bcf6bf4ced7e9 |
|
8 |
+0, 7, 7, 1, 191676, 9743925e523417ebb8bc67398db998bb |
|
9 |
+0, 8, 8, 1, 191564, 1ed1955e9917b449820910a7f0b32ccf |
|
10 |
+0, 9, 9, 1, 191548, d5c4c8105156760a0ec6fe301ecdf21c |
|
11 |
+0, 10, 10, 1, 191456, dbc73bc7e39f40fc270bf679f581d4dd |
|
12 |
+0, 11, 11, 1, 191276, a824fb35c5ae1373cc7bf21b07cc8c76 |
|
13 |
+0, 12, 12, 1, 191688, bdb5ef586ef4ff64c4f4bde0ce0bfc51 |
|
14 |
+0, 13, 13, 1, 191412, 1639afbba6e6b5781355377e450cf8b4 |
|
15 |
+0, 14, 14, 1, 191408, 086b3cef987cc05cde1ab4e65a08eaa0 |
|
16 |
+0, 15, 15, 1, 191404, 72ba9aa193eb87d7ac7631abc1a57926 |
|
17 |
+0, 16, 16, 1, 191488, 20b5d383654a24966ae8cef0bb9797d9 |
|
18 |
+0, 17, 17, 1, 191568, 73a64fc6f24d33dc66c3f250bb2bb780 |
|
19 |
+0, 18, 18, 1, 191592, c53abd778e04e5c7872cc683f14d1573 |
|
20 |
+0, 19, 19, 1, 191604, 49a74ad438ecf106c5f463293b2b244c |
|
21 |
+0, 20, 20, 1, 191588, 73424c3524c45610276116f947acf453 |
|
22 |
+0, 21, 21, 1, 191648, 931d156f5077fafc3d3de5992924bf04 |
|
23 |
+0, 22, 22, 1, 191536, 07e2afbbb3089ebe578606190c13d1d9 |
|
24 |
+0, 23, 23, 1, 191584, c4612e5016957be04efde7ed617ef366 |
|
25 |
+0, 24, 24, 1, 191636, dc050ed93382112e04c70671527a30f5 |
|
26 |
+0, 25, 25, 1, 191512, 185b3fce35bd0daec1863a867924e0af |
|
27 |
+0, 26, 26, 1, 191632, 3943a51c9b74627cfb957ed48e2f05c9 |
|
28 |
+0, 27, 27, 1, 191796, 0b9f806f55ee7a4e3da57d020f55a506 |
|
29 |
+0, 28, 28, 1, 192012, 682a5ccd7ceabd0b78e082db56d0cdea |
|
30 |
+0, 29, 29, 1, 191952, 125f8574ea41e351197a5ea19fdef534 |
|
31 |
+0, 30, 30, 1, 191724, 37a0f598b5499d8f87bc59e3533ae865 |
|
32 |
+0, 31, 31, 1, 191780, 4af30d848aae71f6b771772650f19855 |
|
33 |
+0, 32, 32, 1, 191624, 253d25de282366630257cc475bc25406 |
|
34 |
+0, 33, 33, 1, 191392, 00e0e8f4e9e957b11d8cd06c808564c3 |
|
35 |
+0, 34, 34, 1, 191328, a920f74d3c03b861156509dc1056bb15 |
|
36 |
+0, 35, 35, 1, 191532, bd46443a91845d421a1d602884c2752f |
|
37 |
+0, 36, 36, 1, 191844, b1e04afa26a9bee13fc7cc2736987d8e |
|
38 |
+0, 37, 37, 1, 191824, 611a706a43ad910e90bf8fd3818ca987 |
|
39 |
+0, 38, 38, 1, 191800, a810b661c6be0257df68252b36f7cf3d |
|
40 |
+0, 39, 39, 1, 191692, 4560e8f9db047066e5140d59f408c82c |
|
41 |
+0, 40, 40, 1, 191804, 1ba3a85b5a3f4ca503aa2ef4ae3a7b79 |
|
42 |
+0, 41, 41, 1, 191540, e739afb686e4d0d7ae2817ecc5fba584 |
|
43 |
+0, 42, 42, 1, 191536, fbb2e21954ff43b603c932ca03dd71d0 |
|
44 |
+0, 43, 43, 1, 191680, ee91c6758842419248ed5ecbdbdfaf89 |
|
45 |
+0, 44, 44, 1, 191784, 8137a4fd101c279d62ab23ef08bc763a |
|
46 |
+0, 45, 45, 1, 191936, 838ee8574f632222c45866841749cd9c |
|
47 |
+0, 46, 46, 1, 191912, 80f414eca8c544d09acac6696314a74b |
|
48 |
+0, 47, 47, 1, 191772, 5e457f447e765b2f13e8e9a9af359ec8 |
|
49 |
+0, 48, 48, 1, 191704, 501ce8349316c6ab1c3100eecb31b551 |
|
50 |
+0, 49, 49, 1, 191720, 3999f5d44150a6e44cf4fe55a3d146e0 |