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.
Signed-off-by: Nicolas George <geo...@nsup.org> --- libavfilter/Makefile | 1 + libavfilter/allfilters.c | 1 + libavfilter/vsrc_testsrc.c | 271 +++++++++++++++++++++++++++++++++ tests/fate/filter-video.mak | 9 ++ tests/ref/fate/filter-testsrc2-rgb24 | 71 +++++++++ tests/ref/fate/filter-testsrc2-yuv420p | 71 +++++++++ tests/ref/fate/filter-testsrc2-yuv444p | 71 +++++++++ 7 files changed, 495 insertions(+) create mode 100644 tests/ref/fate/filter-testsrc2-rgb24 create mode 100644 tests/ref/fate/filter-testsrc2-yuv420p create mode 100644 tests/ref/fate/filter-testsrc2-yuv444p diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 8e776c1..dd4f547 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -263,6 +263,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 diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 9385fdf..8e363a0 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -284,6 +284,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); diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c index f63c861..1fca3e7 100644 --- a/libavfilter/vsrc_testsrc.c +++ b/libavfilter/vsrc_testsrc.c @@ -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 diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak index 17380ae..3f452b6 100644 --- a/tests/fate/filter-video.mak +++ b/tests/fate/filter-video.mak @@ -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 diff --git a/tests/ref/fate/filter-testsrc2-rgb24 b/tests/ref/fate/filter-testsrc2-rgb24 new file mode 100644 index 0000000..2fdfa00 --- /dev/null +++ b/tests/ref/fate/filter-testsrc2-rgb24 @@ -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 diff --git a/tests/ref/fate/filter-testsrc2-yuv420p b/tests/ref/fate/filter-testsrc2-yuv420p new file mode 100644 index 0000000..804e5fa --- /dev/null +++ b/tests/ref/fate/filter-testsrc2-yuv420p @@ -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 diff --git a/tests/ref/fate/filter-testsrc2-yuv444p b/tests/ref/fate/filter-testsrc2-yuv444p new file mode 100644 index 0000000..c8cc7c1 --- /dev/null +++ b/tests/ref/fate/filter-testsrc2-yuv444p @@ -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 -- 2.6.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel