Similar to testsrc, but using drawutils and therefore supporting a lot of pixel formats instead of just rgb24. This allows using it as input for other tests without requiring a format conversion. It is also slightly faster than testsrc for some reason.tags/n3.0
| @@ -264,6 +264,7 @@ OBJS-$(CONFIG_RGBTESTSRC_FILTER) += vsrc_testsrc.o | |||
| OBJS-$(CONFIG_SMPTEBARS_FILTER) += vsrc_testsrc.o | |||
| OBJS-$(CONFIG_SMPTEHDBARS_FILTER) += vsrc_testsrc.o | |||
| OBJS-$(CONFIG_TESTSRC_FILTER) += vsrc_testsrc.o | |||
| OBJS-$(CONFIG_TESTSRC2_FILTER) += vsrc_testsrc.o | |||
| OBJS-$(CONFIG_NULLSINK_FILTER) += vsink_nullsink.o | |||
| @@ -285,6 +285,7 @@ void avfilter_register_all(void) | |||
| REGISTER_FILTER(SMPTEBARS, smptebars, vsrc); | |||
| REGISTER_FILTER(SMPTEHDBARS, smptehdbars, vsrc); | |||
| REGISTER_FILTER(TESTSRC, testsrc, vsrc); | |||
| REGISTER_FILTER(TESTSRC2, testsrc2, vsrc); | |||
| REGISTER_FILTER(NULLSINK, nullsink, vsink); | |||
| @@ -41,6 +41,7 @@ | |||
| #include "libavutil/imgutils.h" | |||
| #include "libavutil/intreadwrite.h" | |||
| #include "libavutil/parseutils.h" | |||
| #include "libavutil/xga_font_data.h" | |||
| #include "avfilter.h" | |||
| #include "drawutils.h" | |||
| #include "formats.h" | |||
| @@ -679,6 +680,276 @@ AVFilter ff_vsrc_testsrc = { | |||
| #endif /* CONFIG_TESTSRC_FILTER */ | |||
| #if CONFIG_TESTSRC2_FILTER | |||
| static const AVOption testsrc2_options[] = { | |||
| COMMON_OPTIONS | |||
| { NULL } | |||
| }; | |||
| AVFILTER_DEFINE_CLASS(testsrc2); | |||
| static void set_color(TestSourceContext *s, FFDrawColor *color, uint32_t argb) | |||
| { | |||
| uint8_t rgba[4] = { (argb >> 16) & 0xFF, | |||
| (argb >> 8) & 0xFF, | |||
| (argb >> 0) & 0xFF, | |||
| (argb >> 24) & 0xFF, }; | |||
| ff_draw_color(&s->draw, color, rgba); | |||
| } | |||
| static uint32_t color_gradient(unsigned index) | |||
| { | |||
| unsigned si = index & 0xFF, sd = 0xFF - si; | |||
| switch (index >> 8) { | |||
| case 0: return 0xFF0000 + (si << 8); | |||
| case 1: return 0x00FF00 + (sd << 16); | |||
| case 2: return 0x00FF00 + (si << 0); | |||
| case 3: return 0x0000FF + (sd << 8); | |||
| case 4: return 0x0000FF + (si << 16); | |||
| case 5: return 0xFF0000 + (sd << 0); | |||
| } | |||
| av_assert0(0); | |||
| } | |||
| static void draw_text(TestSourceContext *s, AVFrame *frame, FFDrawColor *color, | |||
| int x0, int y0, const uint8_t *text) | |||
| { | |||
| int x = x0; | |||
| for (; *text; text++) { | |||
| if (*text == '\n') { | |||
| x = x0; | |||
| y0 += 16; | |||
| continue; | |||
| } | |||
| ff_blend_mask(&s->draw, color, frame->data, frame->linesize, | |||
| frame->width, frame->height, | |||
| avpriv_vga16_font + *text * 16, 1, 8, 16, 0, 0, x, y0); | |||
| x += 8; | |||
| } | |||
| } | |||
| static void test2_fill_picture(AVFilterContext *ctx, AVFrame *frame) | |||
| { | |||
| TestSourceContext *s = ctx->priv; | |||
| FFDrawColor color; | |||
| /* colored background */ | |||
| { | |||
| unsigned i, x = 0, x2; | |||
| x = 0; | |||
| for (i = 1; i < 7; i++) { | |||
| x2 = av_rescale(i, s->w, 6); | |||
| x2 = ff_draw_round_to_sub(&s->draw, 0, 0, x2); | |||
| set_color(s, &color, ((i & 1) ? 0xFF0000 : 0) | | |||
| ((i & 2) ? 0x00FF00 : 0) | | |||
| ((i & 4) ? 0x0000FF : 0)); | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| x, 0, x2 - x, frame->height); | |||
| x = x2; | |||
| } | |||
| } | |||
| /* oblique gradient */ | |||
| /* note: too slow if using blending */ | |||
| if (s->h >= 64) { | |||
| unsigned x, dx, y0, y, g0, g; | |||
| dx = ff_draw_round_to_sub(&s->draw, 0, +1, 1); | |||
| y0 = av_rescale_q(s->pts, s->time_base, av_make_q(2, s->h - 16)); | |||
| g0 = av_rescale_q(s->pts, s->time_base, av_make_q(1, 128)); | |||
| for (x = 0; x < s->w; x += dx) { | |||
| g = (av_rescale(x, 6 * 256, s->w) + g0) % (6 * 256); | |||
| set_color(s, &color, color_gradient(g)); | |||
| y = y0 + av_rescale(x, s->h / 2, s->w); | |||
| y %= 2 * (s->h - 16); | |||
| if (y > s->h - 16) | |||
| y = 2 * (s->h - 16) - y; | |||
| y = ff_draw_round_to_sub(&s->draw, 1, 0, y); | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| x, y, dx, 16); | |||
| } | |||
| } | |||
| /* top right: draw clock hands */ | |||
| if (s->w >= 64 && s->h >= 64) { | |||
| int l = (FFMIN(s->w, s->h) - 32) >> 1; | |||
| int steps = FFMAX(4, l >> 5); | |||
| int xc = (s->w >> 2) + (s->w >> 1); | |||
| int yc = (s->h >> 2); | |||
| int cycle = l << 2; | |||
| int pos, xh, yh; | |||
| int c, i; | |||
| for (c = 0; c < 3; c++) { | |||
| set_color(s, &color, 0xBBBBBB ^ (0xFF << (c << 3))); | |||
| pos = av_rescale_q(s->pts, s->time_base, av_make_q(64 >> (c << 1), cycle)) % cycle; | |||
| xh = pos < 1 * l ? pos : | |||
| pos < 2 * l ? l : | |||
| pos < 3 * l ? 3 * l - pos : 0; | |||
| yh = pos < 1 * l ? 0 : | |||
| pos < 2 * l ? pos - l : | |||
| pos < 3 * l ? l : | |||
| cycle - pos; | |||
| xh -= l >> 1; | |||
| yh -= l >> 1; | |||
| for (i = 1; i <= steps; i++) { | |||
| int x = av_rescale(xh, i, steps) + xc; | |||
| int y = av_rescale(yh, i, steps) + yc; | |||
| x = ff_draw_round_to_sub(&s->draw, 0, -1, x); | |||
| y = ff_draw_round_to_sub(&s->draw, 1, -1, y); | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| x, y, 8, 8); | |||
| } | |||
| } | |||
| } | |||
| /* bottom left: beating rectangles */ | |||
| if (s->w >= 64 && s->h >= 64) { | |||
| int l = (FFMIN(s->w, s->h) - 16) >> 2; | |||
| int cycle = l << 3; | |||
| int xc = (s->w >> 2); | |||
| int yc = (s->h >> 2) + (s->h >> 1); | |||
| int xm1 = ff_draw_round_to_sub(&s->draw, 0, -1, xc - 8); | |||
| int xm2 = ff_draw_round_to_sub(&s->draw, 0, +1, xc + 8); | |||
| int ym1 = ff_draw_round_to_sub(&s->draw, 1, -1, yc - 8); | |||
| int ym2 = ff_draw_round_to_sub(&s->draw, 1, +1, yc + 8); | |||
| int size, step, x1, x2, y1, y2; | |||
| size = av_rescale_q(s->pts, s->time_base, av_make_q(4, cycle)); | |||
| step = size / l; | |||
| size %= l; | |||
| if (step & 1) | |||
| size = l - size; | |||
| step = (step >> 1) & 3; | |||
| set_color(s, &color, 0xFF808080); | |||
| x1 = ff_draw_round_to_sub(&s->draw, 0, -1, xc - 4 - size); | |||
| x2 = ff_draw_round_to_sub(&s->draw, 0, +1, xc + 4 + size); | |||
| y1 = ff_draw_round_to_sub(&s->draw, 1, -1, yc - 4 - size); | |||
| y2 = ff_draw_round_to_sub(&s->draw, 1, +1, yc + 4 + size); | |||
| if (step == 0 || step == 2) | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| x1, ym1, x2 - x1, ym2 - ym1); | |||
| if (step == 1 || step == 2) | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| xm1, y1, xm2 - xm1, y2 - y1); | |||
| if (step == 3) | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| x1, y1, x2 - x1, y2 - y1); | |||
| } | |||
| /* bottom right: checker with random noise */ | |||
| { | |||
| unsigned xmin = av_rescale(5, s->w, 8); | |||
| unsigned xmax = av_rescale(7, s->w, 8); | |||
| unsigned ymin = av_rescale(5, s->h, 8); | |||
| unsigned ymax = av_rescale(7, s->h, 8); | |||
| unsigned x, y, i, r; | |||
| uint8_t alpha[256]; | |||
| r = s->pts; | |||
| for (y = ymin; y < ymax - 15; y += 16) { | |||
| for (x = xmin; x < xmax - 15; x += 16) { | |||
| if ((x ^ y) & 16) | |||
| continue; | |||
| for (i = 0; i < 256; i++) { | |||
| r = r * 1664525 + 1013904223; | |||
| alpha[i] = r >> 24; | |||
| } | |||
| set_color(s, &color, 0xFF00FF80); | |||
| ff_blend_mask(&s->draw, &color, frame->data, frame->linesize, | |||
| frame->width, frame->height, | |||
| alpha, 16, 16, 16, 3, 0, x, y); | |||
| } | |||
| } | |||
| } | |||
| /* bouncing square */ | |||
| if (s->w >= 16 && s->h >= 16) { | |||
| unsigned w = s->w - 8; | |||
| unsigned h = s->h - 8; | |||
| unsigned x = av_rescale_q(s->pts, s->time_base, av_make_q(233, 55 * w)) % (w << 1); | |||
| unsigned y = av_rescale_q(s->pts, s->time_base, av_make_q(233, 89 * h)) % (h << 1); | |||
| if (x > w) | |||
| x = (w << 1) - x; | |||
| if (y > h) | |||
| y = (h << 1) - y; | |||
| x = ff_draw_round_to_sub(&s->draw, 0, -1, x); | |||
| y = ff_draw_round_to_sub(&s->draw, 1, -1, y); | |||
| set_color(s, &color, 0xFF8000FF); | |||
| ff_fill_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| x, y, 8, 8); | |||
| } | |||
| /* top right: draw frame time and frame number */ | |||
| { | |||
| char buf[256]; | |||
| unsigned time; | |||
| time = av_rescale_q(s->pts, s->time_base, av_make_q(1, 1000)) % 86400000; | |||
| set_color(s, &color, 0xC0000000); | |||
| ff_blend_rectangle(&s->draw, &color, frame->data, frame->linesize, | |||
| frame->width, frame->height, | |||
| 2, 2, 100, 36); | |||
| set_color(s, &color, 0xFFFF8000); | |||
| snprintf(buf, sizeof(buf), "%02d:%02d:%02d.%03d\n%12"PRIi64, | |||
| time / 3600000, (time / 60000) % 60, (time / 1000) % 60, | |||
| time % 1000, s->pts); | |||
| draw_text(s, frame, &color, 4, 4, buf); | |||
| } | |||
| } | |||
| static av_cold int test2_init(AVFilterContext *ctx) | |||
| { | |||
| TestSourceContext *s = ctx->priv; | |||
| s->fill_picture_fn = test2_fill_picture; | |||
| return init(ctx); | |||
| } | |||
| static int test2_query_formats(AVFilterContext *ctx) | |||
| { | |||
| return ff_set_common_formats(ctx, ff_draw_supported_pixel_formats(0)); | |||
| } | |||
| static int test2_config_props(AVFilterLink *inlink) | |||
| { | |||
| AVFilterContext *ctx = inlink->src; | |||
| TestSourceContext *s = ctx->priv; | |||
| av_assert0(ff_draw_init(&s->draw, inlink->format, 0) >= 0); | |||
| s->w = ff_draw_round_to_sub(&s->draw, 0, -1, s->w); | |||
| s->h = ff_draw_round_to_sub(&s->draw, 1, -1, s->h); | |||
| if (av_image_check_size(s->w, s->h, 0, ctx) < 0) | |||
| return AVERROR(EINVAL); | |||
| return config_props(inlink); | |||
| } | |||
| static const AVFilterPad avfilter_vsrc_testsrc2_outputs[] = { | |||
| { | |||
| .name = "default", | |||
| .type = AVMEDIA_TYPE_VIDEO, | |||
| .request_frame = request_frame, | |||
| .config_props = test2_config_props, | |||
| }, | |||
| { NULL } | |||
| }; | |||
| AVFilter ff_vsrc_testsrc2 = { | |||
| .name = "testsrc2", | |||
| .description = NULL_IF_CONFIG_SMALL("Generate another test pattern."), | |||
| .priv_size = sizeof(TestSourceContext), | |||
| .priv_class = &testsrc2_class, | |||
| .init = test2_init, | |||
| .uninit = uninit, | |||
| .query_formats = test2_query_formats, | |||
| .inputs = NULL, | |||
| .outputs = avfilter_vsrc_testsrc2_outputs, | |||
| }; | |||
| #endif /* CONFIG_TESTSRC2_FILTER */ | |||
| #if CONFIG_RGBTESTSRC_FILTER | |||
| #define rgbtestsrc_options options | |||
| @@ -66,6 +66,15 @@ fate-filter-lavd-life: CMD = framecrc -f lavfi -i life=s=40x40:r=5:seed=42:mold= | |||
| FATE_FILTER-$(call ALLYES, AVDEVICE TESTSRC_FILTER) += fate-filter-lavd-testsrc | |||
| fate-filter-lavd-testsrc: CMD = framecrc -f lavfi -i testsrc=r=7:n=2:d=10 | |||
| FATE_FILTER-$(call ALLYES, TESTSRC2_FILTER) += fate-filter-testsrc2-yuv420p | |||
| fate-filter-testsrc2-yuv420p: CMD = framecrc -lavfi testsrc2=r=7:d=10 -pix_fmt yuv420p | |||
| FATE_FILTER-$(call ALLYES, TESTSRC2_FILTER) += fate-filter-testsrc2-yuv444p | |||
| fate-filter-testsrc2-yuv444p: CMD = framecrc -lavfi testsrc2=r=7:d=10 -pix_fmt yuv444p | |||
| FATE_FILTER-$(call ALLYES, TESTSRC2_FILTER) += fate-filter-testsrc2-rgb24 | |||
| fate-filter-testsrc2-rgb24: CMD = framecrc -lavfi testsrc2=r=7:d=10 -pix_fmt rgb24 | |||
| FATE_FILTER-$(call ALLYES, AVDEVICE TESTSRC_FILTER FORMAT_FILTER CONCAT_FILTER SCALE_FILTER) += fate-filter-lavd-scalenorm | |||
| fate-filter-lavd-scalenorm: tests/data/filtergraphs/scalenorm | |||
| fate-filter-lavd-scalenorm: CMD = framecrc -f lavfi -graph_file $(TARGET_PATH)/tests/data/filtergraphs/scalenorm -i dummy | |||
| @@ -0,0 +1,71 @@ | |||
| #tb 0: 1/7 | |||
| 0, 0, 0, 1, 230400, 0x1c012312 | |||
| 0, 1, 1, 1, 230400, 0xf7cf4e81 | |||
| 0, 2, 2, 1, 230400, 0x29a45e1c | |||
| 0, 3, 3, 1, 230400, 0xe73082a7 | |||
| 0, 4, 4, 1, 230400, 0x7b84c199 | |||
| 0, 5, 5, 1, 230400, 0xcdfd5b52 | |||
| 0, 6, 6, 1, 230400, 0xc035ebb8 | |||
| 0, 7, 7, 1, 230400, 0x8e37afd0 | |||
| 0, 8, 8, 1, 230400, 0x66386f44 | |||
| 0, 9, 9, 1, 230400, 0x17fa6b56 | |||
| 0, 10, 10, 1, 230400, 0x154c5b53 | |||
| 0, 11, 11, 1, 230400, 0xcaff83ab | |||
| 0, 12, 12, 1, 230400, 0x7c3d935d | |||
| 0, 13, 13, 1, 230400, 0x8b2a48ef | |||
| 0, 14, 14, 1, 230400, 0xb56dc39e | |||
| 0, 15, 15, 1, 230400, 0x2f4522e6 | |||
| 0, 16, 16, 1, 230400, 0x275efedf | |||
| 0, 17, 17, 1, 230400, 0x7917108e | |||
| 0, 18, 18, 1, 230400, 0x3f631971 | |||
| 0, 19, 19, 1, 230400, 0xd70bb265 | |||
| 0, 20, 20, 1, 230400, 0xb918d1e3 | |||
| 0, 21, 21, 1, 230400, 0xce8d0032 | |||
| 0, 22, 22, 1, 230400, 0xbbc3bd32 | |||
| 0, 23, 23, 1, 230400, 0x42103583 | |||
| 0, 24, 24, 1, 230400, 0x4be88f56 | |||
| 0, 25, 25, 1, 230400, 0xd32610ea | |||
| 0, 26, 26, 1, 230400, 0xcae0a12b | |||
| 0, 27, 27, 1, 230400, 0x4256bdf3 | |||
| 0, 28, 28, 1, 230400, 0x76b59faf | |||
| 0, 29, 29, 1, 230400, 0x6cbf7c06 | |||
| 0, 30, 30, 1, 230400, 0x0625b097 | |||
| 0, 31, 31, 1, 230400, 0x867c78c3 | |||
| 0, 32, 32, 1, 230400, 0x767cc08b | |||
| 0, 33, 33, 1, 230400, 0x097980b0 | |||
| 0, 34, 34, 1, 230400, 0xba182417 | |||
| 0, 35, 35, 1, 230400, 0x08f62b8b | |||
| 0, 36, 36, 1, 230400, 0x8fc5e64c | |||
| 0, 37, 37, 1, 230400, 0xed020fad | |||
| 0, 38, 38, 1, 230400, 0x9b97066b | |||
| 0, 39, 39, 1, 230400, 0x1d0b31ff | |||
| 0, 40, 40, 1, 230400, 0x6915912f | |||
| 0, 41, 41, 1, 230400, 0xb7e6358e | |||
| 0, 42, 42, 1, 230400, 0x7a3aa13b | |||
| 0, 43, 43, 1, 230400, 0x7317e56a | |||
| 0, 44, 44, 1, 230400, 0xf1e1c7f9 | |||
| 0, 45, 45, 1, 230400, 0xb1d5d5e1 | |||
| 0, 46, 46, 1, 230400, 0x0bad1208 | |||
| 0, 47, 47, 1, 230400, 0x2f71275a | |||
| 0, 48, 48, 1, 230400, 0x4d79679d | |||
| 0, 49, 49, 1, 230400, 0xfa52be03 | |||
| 0, 50, 50, 1, 230400, 0x17d1d67a | |||
| 0, 51, 51, 1, 230400, 0x15844f5b | |||
| 0, 52, 52, 1, 230400, 0xd19466c3 | |||
| 0, 53, 53, 1, 230400, 0xeb80cd8a | |||
| 0, 54, 54, 1, 230400, 0x9beee240 | |||
| 0, 55, 55, 1, 230400, 0x677a13b3 | |||
| 0, 56, 56, 1, 230400, 0x43abe88f | |||
| 0, 57, 57, 1, 230400, 0xa42aafc1 | |||
| 0, 58, 58, 1, 230400, 0x0a78c290 | |||
| 0, 59, 59, 1, 230400, 0x3806e07d | |||
| 0, 60, 60, 1, 230400, 0xaeef5d61 | |||
| 0, 61, 61, 1, 230400, 0x0763c77f | |||
| 0, 62, 62, 1, 230400, 0xccc17ab1 | |||
| 0, 63, 63, 1, 230400, 0x9a844893 | |||
| 0, 64, 64, 1, 230400, 0x8f962741 | |||
| 0, 65, 65, 1, 230400, 0xe3022980 | |||
| 0, 66, 66, 1, 230400, 0x896130af | |||
| 0, 67, 67, 1, 230400, 0xdf6675fa | |||
| 0, 68, 68, 1, 230400, 0xa20c8f9e | |||
| 0, 69, 69, 1, 230400, 0x3e402c75 | |||
| @@ -0,0 +1,71 @@ | |||
| #tb 0: 1/7 | |||
| 0, 0, 0, 1, 115200, 0x3744b3ed | |||
| 0, 1, 1, 1, 115200, 0x0c1062d6 | |||
| 0, 2, 2, 1, 115200, 0x201b9db1 | |||
| 0, 3, 3, 1, 115200, 0x278d887e | |||
| 0, 4, 4, 1, 115200, 0x309b9c06 | |||
| 0, 5, 5, 1, 115200, 0x75e1a17b | |||
| 0, 6, 6, 1, 115200, 0xa14e9aca | |||
| 0, 7, 7, 1, 115200, 0xb73857e2 | |||
| 0, 8, 8, 1, 115200, 0x686b77e7 | |||
| 0, 9, 9, 1, 115200, 0x02b6ab21 | |||
| 0, 10, 10, 1, 115200, 0x1fc2d693 | |||
| 0, 11, 11, 1, 115200, 0x296dd4a5 | |||
| 0, 12, 12, 1, 115200, 0x2d0ba5a4 | |||
| 0, 13, 13, 1, 115200, 0x59e85f83 | |||
| 0, 14, 14, 1, 115200, 0xc95a675e | |||
| 0, 15, 15, 1, 115200, 0x40426f99 | |||
| 0, 16, 16, 1, 115200, 0xf040bf35 | |||
| 0, 17, 17, 1, 115200, 0xc705ccd9 | |||
| 0, 18, 18, 1, 115200, 0xa76dcd9d | |||
| 0, 19, 19, 1, 115200, 0x5635daa5 | |||
| 0, 20, 20, 1, 115200, 0x3af5d306 | |||
| 0, 21, 21, 1, 115200, 0x0caf7172 | |||
| 0, 22, 22, 1, 115200, 0x7161ef8f | |||
| 0, 23, 23, 1, 115200, 0xc8ce7fb1 | |||
| 0, 24, 24, 1, 115200, 0xccf02fed | |||
| 0, 25, 25, 1, 115200, 0x81cdf49f | |||
| 0, 26, 26, 1, 115200, 0xb9170ee1 | |||
| 0, 27, 27, 1, 115200, 0x7e7d78d0 | |||
| 0, 28, 28, 1, 115200, 0xfe4c0185 | |||
| 0, 29, 29, 1, 115200, 0x9dde4256 | |||
| 0, 30, 30, 1, 115200, 0x1eb35d69 | |||
| 0, 31, 31, 1, 115200, 0xad3d2e3f | |||
| 0, 32, 32, 1, 115200, 0xf3282aa1 | |||
| 0, 33, 33, 1, 115200, 0x1cef3c17 | |||
| 0, 34, 34, 1, 115200, 0x688a442c | |||
| 0, 35, 35, 1, 115200, 0x2cdb327a | |||
| 0, 36, 36, 1, 115200, 0xe6c16f00 | |||
| 0, 37, 37, 1, 115200, 0x6f8fac56 | |||
| 0, 38, 38, 1, 115200, 0x54e8d2a1 | |||
| 0, 39, 39, 1, 115200, 0x29afc657 | |||
| 0, 40, 40, 1, 115200, 0xb3138f57 | |||
| 0, 41, 41, 1, 115200, 0x169041ca | |||
| 0, 42, 42, 1, 115200, 0x9e3e4e2b | |||
| 0, 43, 43, 1, 115200, 0x192977ac | |||
| 0, 44, 44, 1, 115200, 0x4aefe354 | |||
| 0, 45, 45, 1, 115200, 0xc575c060 | |||
| 0, 46, 46, 1, 115200, 0xfe3ec033 | |||
| 0, 47, 47, 1, 115200, 0xab53a3e7 | |||
| 0, 48, 48, 1, 115200, 0xbe229fcb | |||
| 0, 49, 49, 1, 115200, 0x088e58c3 | |||
| 0, 50, 50, 1, 115200, 0x79eaf2db | |||
| 0, 51, 51, 1, 115200, 0xb32489ab | |||
| 0, 52, 52, 1, 115200, 0x125d1db7 | |||
| 0, 53, 53, 1, 115200, 0x81efd887 | |||
| 0, 54, 54, 1, 115200, 0x0eb22945 | |||
| 0, 55, 55, 1, 115200, 0x46cca5d0 | |||
| 0, 56, 56, 1, 115200, 0x636c4203 | |||
| 0, 57, 57, 1, 115200, 0x3d3074a6 | |||
| 0, 58, 58, 1, 115200, 0xe92f787e | |||
| 0, 59, 59, 1, 115200, 0xd0cd4ecf | |||
| 0, 60, 60, 1, 115200, 0xf3ac6472 | |||
| 0, 61, 61, 1, 115200, 0xac8063b4 | |||
| 0, 62, 62, 1, 115200, 0x2b0c68f2 | |||
| 0, 63, 63, 1, 115200, 0xc6173b40 | |||
| 0, 64, 64, 1, 115200, 0x12c35e41 | |||
| 0, 65, 65, 1, 115200, 0x57c48fdd | |||
| 0, 66, 66, 1, 115200, 0x1079be75 | |||
| 0, 67, 67, 1, 115200, 0xc8e7d33e | |||
| 0, 68, 68, 1, 115200, 0x79cdac12 | |||
| 0, 69, 69, 1, 115200, 0x8dbe5a5f | |||
| @@ -0,0 +1,71 @@ | |||
| #tb 0: 1/7 | |||
| 0, 0, 0, 1, 230400, 0xbfb96366 | |||
| 0, 1, 1, 1, 230400, 0xe63ca6e9 | |||
| 0, 2, 2, 1, 230400, 0xc6acccc8 | |||
| 0, 3, 3, 1, 230400, 0x6ea1b629 | |||
| 0, 4, 4, 1, 230400, 0x508477ed | |||
| 0, 5, 5, 1, 230400, 0x49d4d57c | |||
| 0, 6, 6, 1, 230400, 0xd601a939 | |||
| 0, 7, 7, 1, 230400, 0x0a0288f3 | |||
| 0, 8, 8, 1, 230400, 0xa6da89f8 | |||
| 0, 9, 9, 1, 230400, 0x0490ac8e | |||
| 0, 10, 10, 1, 230400, 0x1873ccd2 | |||
| 0, 11, 11, 1, 230400, 0x64ef9885 | |||
| 0, 12, 12, 1, 230400, 0x6b8fa2f0 | |||
| 0, 13, 13, 1, 230400, 0x8d9657a4 | |||
| 0, 14, 14, 1, 230400, 0xb4af4f21 | |||
| 0, 15, 15, 1, 230400, 0x64137e0e | |||
| 0, 16, 16, 1, 230400, 0xb8b26ce2 | |||
| 0, 17, 17, 1, 230400, 0xee1e7b00 | |||
| 0, 18, 18, 1, 230400, 0x1c9b25d8 | |||
| 0, 19, 19, 1, 230400, 0xe0c761ab | |||
| 0, 20, 20, 1, 230400, 0xe1cf0c14 | |||
| 0, 21, 21, 1, 230400, 0xea380055 | |||
| 0, 22, 22, 1, 230400, 0x6537716f | |||
| 0, 23, 23, 1, 230400, 0x8d9b9380 | |||
| 0, 24, 24, 1, 230400, 0x9a04e333 | |||
| 0, 25, 25, 1, 230400, 0x78005375 | |||
| 0, 26, 26, 1, 230400, 0xc1cc9b9e | |||
| 0, 27, 27, 1, 230400, 0x84fda020 | |||
| 0, 28, 28, 1, 230400, 0x711ef4ab | |||
| 0, 29, 29, 1, 230400, 0xccd04c02 | |||
| 0, 30, 30, 1, 230400, 0xcf2a4bbd | |||
| 0, 31, 31, 1, 230400, 0x6d0ef0c0 | |||
| 0, 32, 32, 1, 230400, 0x46141d09 | |||
| 0, 33, 33, 1, 230400, 0x3a3d3f71 | |||
| 0, 34, 34, 1, 230400, 0xe9e7f98f | |||
| 0, 35, 35, 1, 230400, 0x0f618ebb | |||
| 0, 36, 36, 1, 230400, 0x9c7d07b2 | |||
| 0, 37, 37, 1, 230400, 0x90f8e960 | |||
| 0, 38, 38, 1, 230400, 0xe3a856aa | |||
| 0, 39, 39, 1, 230400, 0xc66dcd53 | |||
| 0, 40, 40, 1, 230400, 0xe7c1a281 | |||
| 0, 41, 41, 1, 230400, 0xff484046 | |||
| 0, 42, 42, 1, 230400, 0x1f56e486 | |||
| 0, 43, 43, 1, 230400, 0x46bba179 | |||
| 0, 44, 44, 1, 230400, 0x05a05e03 | |||
| 0, 45, 45, 1, 230400, 0x552d3d32 | |||
| 0, 46, 46, 1, 230400, 0x0899531d | |||
| 0, 47, 47, 1, 230400, 0x6321c950 | |||
| 0, 48, 48, 1, 230400, 0xed67b3cc | |||
| 0, 49, 49, 1, 230400, 0x37ec807d | |||
| 0, 50, 50, 1, 230400, 0xc6af1344 | |||
| 0, 51, 51, 1, 230400, 0x2bc9132b | |||
| 0, 52, 52, 1, 230400, 0x6024e553 | |||
| 0, 53, 53, 1, 230400, 0xd7cef4f3 | |||
| 0, 54, 54, 1, 230400, 0xf7f6eb0d | |||
| 0, 55, 55, 1, 230400, 0x0a2ed09e | |||
| 0, 56, 56, 1, 230400, 0x8c6883aa | |||
| 0, 57, 57, 1, 230400, 0x8542f554 | |||
| 0, 58, 58, 1, 230400, 0xbebf972f | |||
| 0, 59, 59, 1, 230400, 0xf6f5f05f | |||
| 0, 60, 60, 1, 230400, 0xa4047f4a | |||
| 0, 61, 61, 1, 230400, 0x2b3f3d82 | |||
| 0, 62, 62, 1, 230400, 0x99d9049a | |||
| 0, 63, 63, 1, 230400, 0xe74e5520 | |||
| 0, 64, 64, 1, 230400, 0x04e2cd3d | |||
| 0, 65, 65, 1, 230400, 0x2324e05e | |||
| 0, 66, 66, 1, 230400, 0x4e4e3400 | |||
| 0, 67, 67, 1, 230400, 0xdd547c3e | |||
| 0, 68, 68, 1, 230400, 0x1c6c13e4 | |||
| 0, 69, 69, 1, 230400, 0xf7d2d98b | |||