X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=tests%2Fvideogen.c;h=8c3d53976e65ebcb7ccebfdb6f260f508b704c9f;hb=4a9ca9355607053fdbcb8adcb614b08305eca88f;hp=4238e3f862d4ca6152a57208e1c75498550469b0;hpb=966116b9f73a27cf2cb5692cf1bc326bc0bf2ceb;p=ffmpeg diff --git a/tests/videogen.c b/tests/videogen.c index 4238e3f862d..8c3d53976e6 100644 --- a/tests/videogen.c +++ b/tests/videogen.c @@ -1,23 +1,23 @@ /* - * Generates a synthetic YUV video sequence suitable for codec testing. - * NOTE: No floats are used to guarantee a bit exact output. + * Generate a synthetic YUV video sequence suitable for codec testing. + * NOTE: No floats are used to guarantee bitexact output. * * Copyright (c) 2002 Fabrice Bellard * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -25,128 +25,7 @@ #include #include -#define SCALEBITS 8 -#define ONE_HALF (1 << (SCALEBITS - 1)) -#define FIX(x) ((int) ((x) * (1L<> SCALEBITS; - r = p[3]; - g = p[4]; - b = p[5]; - r1 += r; - g1 += g; - b1 += b; - lum[1] = (FIX(0.29900) * r + FIX(0.58700) * g + - FIX(0.11400) * b + ONE_HALF) >> SCALEBITS; - p += wrap3; - lum += wrap; - - r = p[0]; - g = p[1]; - b = p[2]; - r1 += r; - g1 += g; - b1 += b; - lum[0] = (FIX(0.29900) * r + FIX(0.58700) * g + - FIX(0.11400) * b + ONE_HALF) >> SCALEBITS; - r = p[3]; - g = p[4]; - b = p[5]; - r1 += r; - g1 += g; - b1 += b; - lum[1] = (FIX(0.29900) * r + FIX(0.58700) * g + - FIX(0.11400) * b + ONE_HALF) >> SCALEBITS; - - cb[0] = ((- FIX(0.16874) * r1 - FIX(0.33126) * g1 + - FIX(0.50000) * b1 + 4 * ONE_HALF - 1) >> (SCALEBITS + 2)) + 128; - cr[0] = ((FIX(0.50000) * r1 - FIX(0.41869) * g1 - - FIX(0.08131) * b1 + 4 * ONE_HALF - 1) >> (SCALEBITS + 2)) + 128; - - cb++; - cr++; - p += -wrap3 + 2 * 3; - lum += -wrap + 2; - } - p += wrap3; - lum += wrap; - } -} - -/* cif format */ -#define DEFAULT_WIDTH 352 -#define DEFAULT_HEIGHT 288 -#define DEFAULT_NB_PICT 50 /* 2 seconds */ - -static void pgmyuv_save(const char *filename, int w, int h, - unsigned char *rgb_tab) -{ - FILE *f; - int i, h2, w2; - unsigned char *cb, *cr; - unsigned char *lum_tab, *cb_tab, *cr_tab; - - lum_tab = malloc(w * h); - cb_tab = malloc((w * h) / 4); - cr_tab = malloc((w * h) / 4); - - rgb24_to_yuv420p(lum_tab, cb_tab, cr_tab, rgb_tab, w, h); - - f = fopen(filename,"wb"); - fprintf(f, "P5\n%d %d\n%d\n", w, (h * 3) / 2, 255); - fwrite(lum_tab, 1, w * h, f); - h2 = h / 2; - w2 = w / 2; - cb = cb_tab; - cr = cr_tab; - for(i=0;i= width || - y < 0 || y >= height) - return; - - p = rgb_tab + y * wrap + x * 3; - p[0] = r; - p[1] = g; - p[2] = b; -} +#include "utils.c" static unsigned int myrnd(unsigned int *seed_ptr, int n) { @@ -180,7 +59,7 @@ static int int_cos(int a) neg = 0; if (a > (FRAC_ONE / 4)) { neg = -1; - a = (FRAC_ONE / 2) - a; + a = (FRAC_ONE / 2) - a; } v = FRAC_ONE - ((a * a) >> 4); v = (v ^ neg) - neg; @@ -194,9 +73,9 @@ typedef struct VObj { int r, g, b; } VObj; -VObj objs[NB_OBJS]; +static VObj objs[NB_OBJS]; -unsigned int seed = 1; +static unsigned int seed = 1; static void gen_image(int num, int w, int h) { @@ -204,7 +83,7 @@ static void gen_image(int num, int w, int h) unsigned int seed1; if (num == 0) { - for(i=0;i> FRAC_BITS) & 0xff; - g = (((x1 + y1) * 9) >> FRAC_BITS) & 0xff; - b = ((x1 * 5) >> FRAC_BITS) & 0xff; + r = ((y1 * 7) >> FRAC_BITS) & 0xff; + g = (((x1 + y1) * 9) >> FRAC_BITS) & 0xff; + b = ((x1 * 5) >> FRAC_BITS) & 0xff; put_pixel(x, y, r, g, b); } } /* then some noise with very high intensity to test saturation */ seed1 = num; - for(y=0;yh;y++) { - for(x=0;xw;x++) { + for (y = 0; y < p->h; y++) { + for (x = 0; x < p->w; x++) { r = p->r; g = p->g; b = p->b; @@ -277,11 +156,11 @@ int main(int argc, char **argv) h = DEFAULT_HEIGHT; rgb_tab = malloc(w * h * 3); - wrap = w * 3; - width = w; - height = h; + wrap = w * 3; + width = w; + height = h; - for(i=0;i