on avance vers du mieux

This commit is contained in:
tth 2021-04-03 05:37:03 +02:00
parent 0a92028c56
commit d7a3074561
4 changed files with 53 additions and 63 deletions

View File

@ -52,7 +52,7 @@ crapstr.h: crapulors.liste Makefile craplist2str.awk
crapulator.o: crapulator.c ${DEPS} Makefile crapulator.o: crapulator.c ${DEPS} Makefile
gcc ${COPT} -c $< gcc ${COPT} -c $<
fonctions.o: fonctions.c fonctions.h Makefile fifo.o: fifo.c fifo.h Makefile
gcc ${COPT} -c $< gcc ${COPT} -c $<
sfx.o: sfx.c ${DEPS} Makefile sfx.o: sfx.c ${DEPS} Makefile

View File

@ -19,7 +19,8 @@
*/ */
extern int verbosity; extern int verbosity;
/* private vars of this module - it was very dirty /* private vars of this module - it was very dirty,
* but simple and efficient.
*/ */
static A_Fifo g_fifo; static A_Fifo g_fifo;
@ -45,6 +46,11 @@ int faire_la_somme(A_Fifo *pfifo, FloatImg *destination, int step)
int idx, foo; int idx, foo;
FloatImg *pdest; FloatImg *pdest;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__,
pfifo, destination, step);
#endif
if (NULL==destination) { if (NULL==destination) {
pdest = &(pfifo->total); } pdest = &(pfifo->total); }
else { else {
@ -62,24 +68,26 @@ for (idx=0; idx<pfifo->nbslots; idx += step) {
} }
} }
fprintf(stderr, "*** %s %s writing debug file ***\n", /* XXX
fprintf(stderr, "*** %s:%s writing debugB file ***\n",
__FILE__, __func__); __FILE__, __func__);
fimg_dump_to_file(&g_fifo.total, "debugB.fimg", 0); fimg_dump_to_file(&g_fifo.total, "debugB.fimg", 0);
XXX */
return 0; return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
/* called by 'fonderie.c' /* called by 'fonderie.c'
* this func save the fifo content as
* - float FIMG
* - 16 bits PNM
* - 8 bits PNG
*/ */
int export_fifo(char *fname, int step) int export_fifo(char *fname, int step)
{ {
int foo, type; int foo, type;
foo = faire_la_somme(&g_fifo, NULL, step); #if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, fname, step);
#endif
foo = faire_la_somme(&g_fifo, NULL, 1);
foo = filterstack_run(1, &g_fifo.total, 0); foo = filterstack_run(1, &g_fifo.total, 0);
if (foo) { if (foo) {
@ -88,24 +96,7 @@ if (foo) {
return foo; return foo;
} }
type = format_from_extension(fname); foo = fimg_export_picture(&g_fifo.total, fname, 0);
switch (type) {
case FILE_TYPE_PNG:
foo = fimg_save_as_png(&g_fifo.total, fname, 0);
break;
case FILE_TYPE_PNM:
foo = fimg_save_as_pnm(&g_fifo.total, fname, 0);
break;
case FILE_TYPE_FIMG:
foo = fimg_dump_to_file(&g_fifo.total, fname, 0);
break;
default:
fprintf(stderr, "%s : type of '%s' unknow\n",
__func__, fname);
foo = 888;
break;
}
if (foo) { if (foo) {
fprintf(stderr, "ERR EXPORT '%s' is %d\n", fname, foo); fprintf(stderr, "ERR EXPORT '%s' is %d\n", fname, foo);
exit(3); exit(3);
@ -117,7 +108,11 @@ return 0;
int insert_picture(FloatImg *src) int insert_picture(FloatImg *src)
{ {
FloatImg *dst; FloatImg *dst;
int nbre; int nbre, foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p )\n", __func__, src);
#endif
dst = &g_fifo.slots[g_fifo.next]; dst = &g_fifo.slots[g_fifo.next];
@ -126,9 +121,12 @@ memcpy(dst->R, src->R, nbre);
memcpy(dst->G, src->G, nbre); memcpy(dst->G, src->G, nbre);
memcpy(dst->B, src->B, nbre); memcpy(dst->B, src->B, nbre);
fprintf(stderr, "*** %s %s writing debug file ***\n", /* XXX
fprintf(stderr, "*** %s:%s writing debugA file ***\n",
__FILE__, __func__); __FILE__, __func__);
fimg_dump_to_file(dst, "debugA.fimg", 0); foo = fimg_dump_to_file(dst, "debugA.fimg", 0);
fprintf(stderr, " ok file dumped %d\n", foo);
XXX */
g_fifo.next++; g_fifo.next %= g_fifo.nbslots; g_fifo.next++; g_fifo.next %= g_fifo.nbslots;

View File

@ -17,12 +17,19 @@
int verbosity; int verbosity;
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
int traite_une_image(FloatImg *image, int step, char *outd) /*
* this is the real worker ? or just a wrapper ?
*/
int traite_une_image(FloatImg *image, char *outd)
{ {
static int numero; static int numero;
int foo; int foo;
char ligne[200]; char ligne[200];
#if DEBUG_LEVEL
fprintf(stderr, "\n>>> %s ( %p '%s' )\n", __func__, image, outd);
#endif
/* here, we put the picz in the fifo machinery */ /* here, we put the picz in the fifo machinery */
foo = insert_picture(image); foo = insert_picture(image);
if (foo) { if (foo) {
@ -30,46 +37,33 @@ if (foo) {
return foo; return foo;
} }
/* and now, we pull the result on the magic computation
*/
sprintf(ligne, "%s/%05d.png", outd, numero); sprintf(ligne, "%s/%05d.png", outd, numero);
foo = export_fifo(ligne, step); if (verbosity > 1) fprintf(stderr, " exporting to '%s'\n", ligne);
foo = export_fifo(ligne, 1);
if (foo) { if (foo) {
fprintf(stderr, "%s: err %d on export\n", __func__, foo); fprintf(stderr, "%s: err %d on export\n", __func__, foo);
return foo; return foo;
} }
numero++; /* VERY IMPORTANT :) */ numero++; /* VERY IMPORTANT :) */
return 0; return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
int insert_blank(FloatImg *image, int nbre, float fval, char *outd) int insert_blank(FloatImg *image, int nbre, char *outd)
{ {
int idx, foo; int idx, foo;
int preloaded = 0;
FloatImg blank;
char *fname;
#if DEBUG_LEVEL #if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %d %d %f '%s' )\n", __func__, fprintf(stderr, ">>> %s ( %p %d '%s' )\n", __func__,
image, nbre, pproc, fval, outd); image, nbre, outd);
#endif #endif
if (NULL != (fname=getenv("BLANK_FIMG"))) {
fprintf(stderr,"%s: try to load %s\n", __func__, fname);
fimg_clone(image, &blank, 1);
foo = fimg_load_from_dump(fname, &blank);
if (foo) {
fprintf(stderr, "epic fail %d on %s\n", foo, fname);
exit(1);
}
if (verbosity) fimg_describe(&blank, "Blank pic");
preloaded = 1;
}
fimg_clear(image); fimg_clear(image);
for (idx=0; idx<nbre; idx++) { for (idx=0; idx<nbre; idx++) {
if (preloaded) { if ((foo=traite_une_image(image, outd))) {
fimg_copy_data(&blank, image);
}
if ((foo=traite_une_image(image, 1, outd))) {
fprintf(stderr, "%s : err %d from 'traite_une_image'\n", fprintf(stderr, "%s : err %d from 'traite_une_image'\n",
__func__, foo); __func__, foo);
break; break;
@ -78,10 +72,6 @@ for (idx=0; idx<nbre; idx++) {
} }
puts(""); puts("");
if (preloaded) {
fimg_destroy(&blank);
}
return 0; return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
@ -98,8 +88,8 @@ float maxvalue;
int datas[3]; int datas[3];
#if DEBUG_LEVEL #if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' -> '%s' %d eff:%d:%d)\n", __func__, fprintf(stderr, "\n>>> %s ( '%s' -> '%s' %d )\n", __func__,
pattern, outdir, szfifo, infx, outfx); pattern, outdir, szfifo);
#endif #endif
if (1 != step) fprintf(stderr, "\tstep is %d\n", step); if (1 != step) fprintf(stderr, "\tstep is %d\n", step);
@ -137,12 +127,14 @@ foo = create_fifo(szfifo, width, height, FIMG_TYPE_RGB);
fprintf(stderr, "init fifo (%d slots) --> %d\n", szfifo, foo); fprintf(stderr, "init fifo (%d slots) --> %d\n", szfifo, foo);
/* XXX inject a few strange pics in the fifo */ /* XXX inject a few strange pics in the fifo */
insert_blank(&input, blk, maxvalue, outdir); insert_blank(&input, blk, outdir);
for (idx=0; idx<globbuf.gl_pathc; idx++) { for (idx=0; idx<globbuf.gl_pathc; idx++) {
cptr = globbuf.gl_pathv[idx]; cptr = globbuf.gl_pathv[idx];
/* first step : read the current grabed picz from disk, /* first step : read the current grabed picz from disk,
and put it in our private buffer */ and put it in our private buffer */
// fprintf(stderr, "\n######### loading '%s'\n", cptr);
foo = fimg_load_from_dump(cptr, &input); foo = fimg_load_from_dump(cptr, &input);
if (foo) { if (foo) {
fprintf(stderr, "load #%d from dump -> %d\n", idx, foo); fprintf(stderr, "load #%d from dump -> %d\n", idx, foo);
@ -155,7 +147,7 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
fprintf(stderr, "%s: input filter -> %d\n", __func__, foo); fprintf(stderr, "%s: input filter -> %d\n", __func__, foo);
exit(1); exit(1);
} }
foo = traite_une_image(&input, step, outdir); foo = traite_une_image(&input, outdir);
if (foo) { if (foo) {
fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo); fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo);
@ -166,7 +158,7 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
fputs("\n", stderr); fputs("\n", stderr);
insert_blank(&input, blk, maxvalue, outdir); insert_blank(&input, blk, outdir);
/* /*
* PLEASE, FLUSH THE FIFO ! * PLEASE, FLUSH THE FIFO !

View File

@ -45,7 +45,7 @@ int kill_a_random_line(FloatImg *pvictime, float fval, int bits)
int line, xpos, offset; int line, xpos, offset;
float ftmp; float ftmp;
#if DEBUG_LEVEL #if DEBUG_LEVEL > 1
fprintf(stderr, ">>> %s ( %p %d )\n", __func__, pvictime, bits); fprintf(stderr, ">>> %s ( %p %d )\n", __func__, pvictime, bits);
#endif #endif