Compare commits

...

7 Commits

Author SHA1 Message Date
tth 6e6433368c - bla 2021-04-03 05:38:08 +02:00
tth d7a3074561 on avance vers du mieux 2021-04-03 05:37:03 +02:00
tth 0a92028c56 killed a bug in fimg_clear ! 2021-04-03 05:21:17 +02:00
tth 7c314c73ce renaming a file 2021-04-02 19:25:20 +02:00
tth 81d04ec4d6 bla 2021-04-02 19:12:22 +02:00
tth 5cf9661713 fonderie software installation 2021-04-02 13:09:20 +02:00
tth f884220433 bla 2021-04-02 09:10:29 +02:00
15 changed files with 83 additions and 84 deletions

View File

@ -6,11 +6,11 @@
COPT = -g -fpic -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses COPT = -g -fpic -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses
LIBS = ../libfloatimg.a -ltiff -lpnglite -lm -lz -lcfitsio LIBS = ../libfloatimg.a -ltiff -lpnglite -lm -lz -lcfitsio
OBJS = fonctions.o sfx.o crapulator.o glitches.o metriques.o \ OBJS = fifo.o sfx.o crapulator.o glitches.o metriques.o \
filterstack.o single.o filterstack.o single.o
DEPS = ../floatimg.h \ DEPS = ../floatimg.h \
fonctions.h crapulator.h metriques.h glitches.h sfx.h \ fifo.h crapulator.h metriques.h glitches.h sfx.h \
filterstack.h crapdef.h crapstr.h single.h filterstack.h crapdef.h crapstr.h single.h
all: fonderie interpolator singlepass t all: fonderie interpolator singlepass t
@ -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

@ -9,7 +9,7 @@
#include "../floatimg.h" #include "../floatimg.h"
#include "fonctions.h" #include "fifo.h"
#include "crapulator.h" #include "crapulator.h"
#include "glitches.h" #include "glitches.h"
#include "sfx.h" #include "sfx.h"
@ -157,7 +157,7 @@ return retval;
* processor. * processor.
*/ */
#define DEBUG_THIS_CRAP 60 #define DEBUG_THIS_CRAP 0
int crapulator(FloatImg *image, int idFx, float fval) int crapulator(FloatImg *image, int idFx, float fval)
{ {

View File

@ -10,7 +10,7 @@
#include "../floatimg.h" #include "../floatimg.h"
#include "fonctions.h" #include "fifo.h"
#include "crapulator.h" #include "crapulator.h"
#include "filterstack.h" #include "filterstack.h"
@ -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

@ -9,7 +9,7 @@
#include <glob.h> #include <glob.h>
#include "../floatimg.h" #include "../floatimg.h"
#include "fonctions.h" #include "fifo.h"
#include "glitches.h" #include "glitches.h"
#include "crapulator.h" #include "crapulator.h"
#include "filterstack.h" #include "filterstack.h"
@ -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

View File

@ -16,7 +16,7 @@
#include "../floatimg.h" #include "../floatimg.h"
#include "fonctions.h" #include "fifo.h"
#include "glitches.h" #include "glitches.h"
#include "crapulator.h" #include "crapulator.h"
#include "metriques.h" #include "metriques.h"

View File

@ -11,7 +11,7 @@
#include "../floatimg.h" #include "../floatimg.h"
#include "fonctions.h" #include "fifo.h"
#include "metriques.h" #include "metriques.h"
#include "sfx.h" #include "sfx.h"
@ -276,7 +276,7 @@ return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
/* nouveau du 20 novembre 2020, pour encoder une vidz du vernissage /* nouveau du 20 novembre 2020, pour encoder une vidz du vernissage
* du festival Sauvageonnes de Mixart-Myrys */ * du festival Sauvageonnes de Mixart-Myrys */
int des_bords_sombres_a(FloatImg *pimg, int offset) int des_bords_sombres_a(FloatImg *pimg, int offset)
{ {
float coef; float coef;

View File

@ -14,7 +14,7 @@ cd ${curdir}
if [ ${error} -ne 0 ] if [ ${error} -ne 0 ]
then then
echo === error on $1 = ${error} echo === error on $1 = ${error}
exit exit 1
fi fi
} }
@ -24,6 +24,7 @@ build lib
build funcs build funcs
build tools build tools
build v4l2 build v4l2
build Fonderie
# ------------------------------------------------------------------ # ------------------------------------------------------------------

View File

@ -29,7 +29,7 @@
\setlength \parskip {0.35em} \setlength \parskip {0.35em}
\makeatletter \makeatletter
% exlpication de ce truc ? % exlication de ce truc ?
\def\verbatim@font{\normalfont\ttfamily\small} \def\verbatim@font{\normalfont\ttfamily\small}
\makeatother \makeatother
@ -125,7 +125,8 @@ Dynamique, précision et \textsl{macheps} ?
\subsection{Pixel négatif ?} \subsection{Pixel négatif ?}
Il est très difficle d'imaginer une lumière négative. Sauf peut-être Il est très difficle d'imaginer une lumière négative. Sauf peut-être
si nous songeons à des coefficients d'absorption ? si nous songeons à des coefficients d'absorption, ou un canal
\textsl{alpha} qui inverserait les valeurs ?
% ------------------------------------------------------------------- % -------------------------------------------------------------------
@ -1311,8 +1312,9 @@ devez mettre ce bout de XML\index{XML} dans le fichier
C'est juste un hack rapide, qui ne fonctionne pas très bien avec C'est juste un hack rapide, qui ne fonctionne pas très bien avec
d'autres commande de IM, comme identify, qui a tendance à d'autres commande de IM, comme identify, qui a tendance à
raconter un peu n'importe quoi... Je compte donc sur le bouquin raconter un peu n'importe quoi, puisqu'elle se base sur le
de \textsl{Brunus} pour avancer... résultat de la conversion\dots
Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
\subsection{Gimp}\index{Gimp} \subsection{Gimp}\index{Gimp}

View File

@ -4,7 +4,7 @@
* http://la.buvette.org/photos/cumul * http://la.buvette.org/photos/cumul
*/ */
#define FIMG_VERSION 128 #define FIMG_VERSION 130
/* /*
* in memory descriptor * in memory descriptor

View File

@ -12,6 +12,10 @@ cp tools/mkfimg tools/fimg2pnm tools/fimgops \
cp v4l2/grabvidseq v4l2/video-infos \ cp v4l2/grabvidseq v4l2/video-infos \
/usr/local/bin /usr/local/bin
cp Fonderie/interpolator Fonderie/fonderie \
Fonderie/singlepass \
/usr/local/bin
A="tools/addtga2fimg" A="tools/addtga2fimg"
if [ -r $A ] ; then if [ -r $A ] ; then
cp $A /usr/local/bin cp $A /usr/local/bin

View File

@ -79,8 +79,7 @@ if( ! fimg_type_is_valid(head->type) ) {
} }
printf(" type %d %s\n", head->type, fimg_str_type(head->type)); printf(" type %d %s\n", head->type, fimg_str_type(head->type));
printf(" dims %d x %d\n", printf(" dims %d x %d\n", head->width, head->height);
head->width, head->height);
printf(" fval/count %f %d\n", head->fval, head->count); printf(" fval/count %f %d\n", head->fval, head->count);
printf(" pixels@ %p %p %p %p\n", printf(" pixels@ %p %p %p %p\n",
@ -249,6 +248,8 @@ if ( ! fimg_type_is_valid(fimg->type) ) {
size = fimg->width * fimg->height * sizeof(float); size = fimg->width * fimg->height * sizeof(float);
memset(fimg->R, 0, size); memset(fimg->R, 0, size);
memset(fimg->G, 0, size);
memset(fimg->B, 0, size);
return 0; return 0;
} }

View File

@ -28,7 +28,7 @@ if (foo) {
} }
if (verbosity) { if (verbosity) {
fprintf(stderr, "%s: image '%s' is %d x %d %s\n", fprintf(stderr, "%s: image '%s' is %dx%d %s\n",
__func__, __func__,
srcname, infos[0], infos[1], srcname, infos[0], infos[1],
fimg_str_type(infos[2])); fimg_str_type(infos[2]));

View File

@ -66,8 +66,8 @@ static void help(int lj)
puts("usage:\n\tfimgops [options] A.fimg B.fimg operator D.fimg"); puts("usage:\n\tfimgops [options] A.fimg B.fimg operator D.fimg");
puts("options:"); puts("options:");
// puts("\t-g convert output to gray"); // puts("\t-g convert output to gray");
puts("\t-k N.N set float value"); printf("\t-k N.N\t\tset float value (def=%.3f)\n", global_fvalue);
puts("\t-v increase verbosity"); puts("\t-v\t\tincrease verbosity");
pr_opcodes(); pr_opcodes();
if (verbosity) fimg_print_version(1); if (verbosity) fimg_print_version(1);
exit(0); exit(0);
@ -107,9 +107,10 @@ int main(int argc, char *argv[])
{ {
int foo, opt, action; int foo, opt, action;
char *operator; char *operator;
FloatImg srcA, srcB, dest; FloatImg srcA, srcB, dest;
global_fvalue = 0.5;
while ((opt = getopt(argc, argv, "hk:v")) != -1) { while ((opt = getopt(argc, argv, "hk:v")) != -1) {
switch(opt) { switch(opt) {
case 'g': break; case 'g': break;