forked from tTh/FloatImg
		
	is fonderie ok ?
This commit is contained in:
		
							parent
							
								
									c9de7cdc80
								
							
						
					
					
						commit
						e0d154c37e
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPT = -g -pg -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses
 | 
					COPT = -g -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses
 | 
				
			||||||
LIBS = -lfloatimg -lpnglite -lm 
 | 
					LIBS = -lfloatimg -lpnglite -lm 
 | 
				
			||||||
OBJS = fonctions.o sfx.o crapulator.o
 | 
					OBJS = fonctions.o sfx.o crapulator.o
 | 
				
			||||||
DEPS = fonctions.h crapulator.h
 | 
					DEPS = fonctions.h crapulator.h
 | 
				
			||||||
 | 
				
			|||||||
@ -10,8 +10,8 @@ de **films flous**.
 | 
				
			|||||||
Le programme principal, utilisé à partir de la ligne de commande
 | 
					Le programme principal, utilisé à partir de la ligne de commande
 | 
				
			||||||
avec une foule d'options aux mnémoniques abscons.
 | 
					avec une foule d'options aux mnémoniques abscons.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Rassurez-vous, en général ils sont wrappables dans des scripts
 | 
					Rassurez-vous, en général il  est wrappable dans des scripts
 | 
				
			||||||
shell. Il est même possible un jour qu'ils puissent lire des 
 | 
					écrits en Bash. Il est même possible un jour qu'ils puissent lire des 
 | 
				
			||||||
paramètres dans `$(env)`.
 | 
					paramètres dans `$(env)`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
@ -45,6 +45,7 @@ GLOB=${GRABDIR}'/?????.fimg'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
${FONDEUR} -v -T 40 -I "$GLOB" -w 10 -x 0
 | 
					${FONDEUR} -v -T 40 -I "$GLOB" -w 10 -x 0
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ensuite il suffit d'encoder toutes les images générées dans
 | 
					Ensuite il suffit d'encoder toutes les images générées dans
 | 
				
			||||||
`p8/` (répertoire de sortie par défaut 
 | 
					`p8/` (répertoire de sortie par défaut 
 | 
				
			||||||
avec une incantation de ffmpeg :
 | 
					avec une incantation de ffmpeg :
 | 
				
			||||||
 | 
				
			|||||||
@ -55,8 +55,8 @@ return 0;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
int crapulator(FloatImg *image, int idFx, float fval)
 | 
					int crapulator(FloatImg *image, int idFx, float fval)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
int			retval, foo;
 | 
					int			retval;
 | 
				
			||||||
FloatImg		imgtmp;
 | 
					// FloatImg		imgtmp;
 | 
				
			||||||
static int		count = 0;
 | 
					static int		count = 0;
 | 
				
			||||||
int			flag_debug = 0;
 | 
					int			flag_debug = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -116,6 +116,10 @@ switch (idFx) {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case 10:
 | 
				
			||||||
 | 
							retval = binarize(image, 0);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	default :
 | 
						default :
 | 
				
			||||||
		fprintf(stderr, "%s : effect #%d invalid\n", 
 | 
							fprintf(stderr, "%s : effect #%d invalid\n", 
 | 
				
			||||||
				__func__, idFx);
 | 
									__func__, idFx);
 | 
				
			||||||
 | 
				
			|||||||
@ -41,13 +41,13 @@ numero++;			/* VERY IMPORTANT :) */
 | 
				
			|||||||
return 0;
 | 
					return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/* -------------------------------------------------------------- */
 | 
					/* -------------------------------------------------------------- */
 | 
				
			||||||
int insert_blank(FloatImg *image, int nbre, int pproc)
 | 
					int insert_blank(FloatImg *image, int nbre, int pproc, float fval)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
int		idx, foo;
 | 
					int		idx, foo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fimg_clear(image);
 | 
					fimg_clear(image);
 | 
				
			||||||
for (idx=0; idx<nbre; idx++) {
 | 
					for (idx=0; idx<nbre; idx++) {
 | 
				
			||||||
	fimg_vdeg_a(image, 16.64);
 | 
						fimg_vdeg_a(image, fval);
 | 
				
			||||||
	// brotche_rand48_b(image, drand48()*0.10, 1e5);
 | 
						// brotche_rand48_b(image, drand48()*0.10, 1e5);
 | 
				
			||||||
	if ((foo=traite_une_image(image, pproc, 1))) {
 | 
						if ((foo=traite_une_image(image, pproc, 1))) {
 | 
				
			||||||
		fprintf(stderr, "%s : err %d from 'traite_une_image'\n",
 | 
							fprintf(stderr, "%s : err %d from 'traite_une_image'\n",
 | 
				
			||||||
@ -61,7 +61,7 @@ puts("");
 | 
				
			|||||||
return 0;
 | 
					return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/* -------------------------------------------------------------- */
 | 
					/* -------------------------------------------------------------- */
 | 
				
			||||||
#define BLANK	40
 | 
					#define BLANK	30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int demarre_la_machine(char *pattern, char *outdir, int szfifo,
 | 
					int demarre_la_machine(char *pattern, char *outdir, int szfifo,
 | 
				
			||||||
				int infx, int outfx, int step)
 | 
									int infx, int outfx, int step)
 | 
				
			||||||
@ -71,11 +71,12 @@ glob_t			globbuf;
 | 
				
			|||||||
char			*cptr;
 | 
					char			*cptr;
 | 
				
			||||||
FloatImg		input;
 | 
					FloatImg		input;
 | 
				
			||||||
double			fin;
 | 
					double			fin;
 | 
				
			||||||
 | 
					float			maxvalue;
 | 
				
			||||||
int			datas[3];
 | 
					int			datas[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if DEBUG_LEVEL
 | 
					#if DEBUG_LEVEL
 | 
				
			||||||
fprintf(stderr, ">>> %s ( '%s' -> '%s'  %d )\n", __func__,
 | 
					fprintf(stderr, ">>> %s ( '%s' -> '%s'  %d  eff:%d:%d)\n", __func__,
 | 
				
			||||||
			pattern, outdir, szfifo);
 | 
								pattern, outdir, szfifo, infx, outfx);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (1 != step) fprintf(stderr, "\tstep is %d\n", step);
 | 
					if (1 != step) fprintf(stderr, "\tstep is %d\n", step);
 | 
				
			||||||
@ -94,21 +95,29 @@ fprintf(stderr, "glob '%s' -> %d, %ld files found\n", pattern, foo,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/*	get the size of the inputs images */
 | 
					/*	get the size of the inputs images */
 | 
				
			||||||
foo = fimg_fileinfos(globbuf.gl_pathv[0], datas);
 | 
					foo = fimg_fileinfos(globbuf.gl_pathv[0], datas);
 | 
				
			||||||
width = datas[0];
 | 
					width = datas[0];		height = datas[1];
 | 
				
			||||||
height = datas[1];
 | 
					fprintf(stderr, "image size %dx%d\n", width, height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fimg_create(&input, width, height, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* get the maximum value of the first pic */
 | 
				
			||||||
 | 
					foo = fimg_load_from_dump(globbuf.gl_pathv[0], &input);
 | 
				
			||||||
 | 
					if (foo) {
 | 
				
			||||||
 | 
						fprintf(stderr, "%s: err %d loading %s\n",
 | 
				
			||||||
 | 
									__func__, foo, globbuf.gl_pathv[0]);
 | 
				
			||||||
 | 
						exit(1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					maxvalue = fimg_get_maxvalue(&input);
 | 
				
			||||||
 | 
					fprintf(stderr, "maxvalue %f\n", maxvalue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foo = create_fifo(szfifo, width, height, FIMG_TYPE_RGB);
 | 
					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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fimg_create(&input, width, height, 3);
 | 
					/* XXX inject a few strange pics in the fifo */
 | 
				
			||||||
 | 
					insert_blank(&input, BLANK, outfx, maxvalue);
 | 
				
			||||||
/* XXX inject a few stange pics in the fifo */
 | 
					 | 
				
			||||||
insert_blank(&input, BLANK, outfx);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
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 */
 | 
				
			||||||
	foo = fimg_load_from_dump(cptr, &input);
 | 
						foo = fimg_load_from_dump(cptr, &input);
 | 
				
			||||||
@ -116,7 +125,6 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
 | 
				
			|||||||
		fprintf(stderr, "load #%d from dump -> %d\n", idx, foo);
 | 
							fprintf(stderr, "load #%d from dump -> %d\n", idx, foo);
 | 
				
			||||||
		continue;
 | 
							continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*		=========================		*/
 | 
						/*		=========================		*/
 | 
				
			||||||
	/*		FSCKING INPUT FILTER HERE 		*/
 | 
						/*		FSCKING INPUT FILTER HERE 		*/
 | 
				
			||||||
	foo = crapulator(&input, infx, 0.42);
 | 
						foo = crapulator(&input, infx, 0.42);
 | 
				
			||||||
@ -124,7 +132,6 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
 | 
				
			|||||||
		fprintf(stderr, "%s crapulator -> %d\n", __func__, foo);
 | 
							fprintf(stderr, "%s crapulator -> %d\n", __func__, foo);
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	foo = traite_une_image(&input, outfx, step);
 | 
						foo = traite_une_image(&input, outfx, step);
 | 
				
			||||||
	if (foo) {
 | 
						if (foo) {
 | 
				
			||||||
		fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo);
 | 
							fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo);
 | 
				
			||||||
@ -132,10 +139,13 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	fprintf(stderr, "\t%5d\r", idx);
 | 
						fprintf(stderr, "\t%5d\r", idx);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
fputs("\n", stderr);
 | 
					fputs("\n", stderr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
insert_blank(&input, BLANK, outfx);
 | 
					insert_blank(&input, BLANK*2, outfx, maxvalue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *		PLEASE, FLUSH THE FIFO !
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fin = fimg_timer_get(0);
 | 
					fin = fimg_timer_get(0);
 | 
				
			||||||
if (idx) {
 | 
					if (idx) {
 | 
				
			||||||
 | 
				
			|||||||
@ -21,8 +21,7 @@ extern	int		verbosity;
 | 
				
			|||||||
int binarize(FloatImg *pimg, int notused)
 | 
					int binarize(FloatImg *pimg, int notused)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
float		mm[6], mR, mG, mB;
 | 
					float		mm[6], mR, mG, mB;
 | 
				
			||||||
int		foo, x, y;
 | 
					int		foo, size;
 | 
				
			||||||
float		rgb[3];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if DEBUG_LEVEL
 | 
					#if DEBUG_LEVEL
 | 
				
			||||||
fprintf(stderr, ">>> %s ( %p %d )\n", __func__, pimg, notused);
 | 
					fprintf(stderr, ">>> %s ( %p %d )\n", __func__, pimg, notused);
 | 
				
			||||||
@ -36,17 +35,15 @@ mB = (mm[5] - mm[4]) / 2.0;
 | 
				
			|||||||
if (verbosity > 1)
 | 
					if (verbosity > 1)
 | 
				
			||||||
	fprintf(stderr, "%s:  %f  %f  %f\n", __func__, mR, mG, mB);
 | 
						fprintf(stderr, "%s:  %f  %f  %f\n", __func__, mR, mG, mB);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for (y=0; y<pimg->height; y++) {
 | 
					size = pimg->width * pimg->height;
 | 
				
			||||||
	for (x=0; x<pimg->width; x++) {
 | 
					
 | 
				
			||||||
		fimg_get_rgb(pimg, x, y, rgb);
 | 
					for (foo=0; foo<size; foo++) {
 | 
				
			||||||
		if (rgb[0] < mR)	rgb[0] = mm[0];
 | 
						if (pimg->R[foo] < mR)	pimg->R[foo] = mm[0];
 | 
				
			||||||
		else			rgb[0] = mm[1];
 | 
						else			pimg->R[foo] = mm[1];
 | 
				
			||||||
		if (rgb[1] < mG)	rgb[1] = mm[2];
 | 
						if (pimg->G[foo] < mG)	pimg->G[foo] = mm[2];
 | 
				
			||||||
		else			rgb[1] = mm[3];
 | 
						else			pimg->G[foo] = mm[3];
 | 
				
			||||||
		if (rgb[2] < mB)	rgb[2] = mm[4];
 | 
						if (pimg->B[foo] < mB)	pimg->B[foo] = mm[4];
 | 
				
			||||||
		else			rgb[2] = mm[5];
 | 
						else			pimg->B[foo] = mm[5];
 | 
				
			||||||
		fimg_put_rgb(pimg, x, y, rgb);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
return 0;
 | 
					return 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -46,3 +46,5 @@ Certains outils externes sont aussi utiles :
 | 
				
			|||||||
Encore trop légère, mais déja [présente](doc/).
 | 
					Encore trop légère, mais déja [présente](doc/).
 | 
				
			||||||
C'est à vous de compiler le
 | 
					C'est à vous de compiler le
 | 
				
			||||||
[PDF](http://la.buvette.org/photos/cumul/the_floatimg_hack.pdf)
 | 
					[PDF](http://la.buvette.org/photos/cumul/the_floatimg_hack.pdf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Your mileage may vary...
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user