Browse Source

need more troll in the doc

tth 1 year ago
parent
commit
c097f6a64d
3 changed files with 104 additions and 2 deletions
  1. 1
    1
      build.sh
  2. 102
    1
      doc/the_floatimg_hack.tex
  3. 1
    0
      lib/fimg-core.c

+ 1
- 1
build.sh View File

@@ -27,10 +27,10 @@ build v4l2
27 27
 
28 28
 # ------------------------------------------------------------------
29 29
 
30
-echo '*************************'
31 30
 
32 31
 make
33 32
 
33
+# ------------------------------------------------------------------
34 34
 
35 35
 
36 36
 

+ 102
- 1
doc/the_floatimg_hack.tex View File

@@ -1,4 +1,4 @@
1
-\documentclass[a4paper,11pt]{article}
1
+\documentclass[a4paper,10pt]{article}
2 2
 
3 3
 % \listfiles              % pour le debug
4 4
 
@@ -24,17 +24,118 @@
24 24
 \section{Image flottante ?}
25 25
 
26 26
 De quoi parle-t-on exactement ?
27
+\vspace{1em}
28
+
29
+Traditionnellement, les valeurs des pixels dans les images
30
+informatiques sont mémorisées sur 8 bits, un octet\index{octet},
31
+soit 256 valeurs différentes.
32
+Ceci dit, on trouve parfois des images codées sur 16 bits par
33
+composante, mais c'est loin d'être le cas général.
34
+J'ai donc souhaité aller plus loin, et coder chaque canal de
35
+chaque pixel en virgule flottante sur 32bits, le type
36
+\texttt{float}\index{float} du langage C.
27 37
 
28 38
 % -------------------------------------------------------------------
29 39
 
30 40
 \tableofcontents
41
+\pagebreak
31 42
 
32 43
 % -------------------------------------------------------------------
33 44
 \section{Example}
34 45
 
46
+Pour commencer, 
47
+nous allons créer une image RGB\index{RGB} complètement noire,
48
+puis l'enregistrer dans un fichier \texttt{.fimg}\index{.fimg},
49
+un format complètement inconnu, puisque je viens de l'inventer
50
+à l'instant même.
51
+
52
+Tout d'abord, nous devons déclarer et garnir quelques variables
53
+pour gérer la machinerie interne.
54
+
55
+\begin{verbatim}
56
+int             width = 640, height = 480;
57
+char            *fname * "exemple.fimg";
58
+FloatImg        fimg;
59
+\end{verbatim}
60
+
61
+Ensuite, nous enchainerons trois étapes : création de l'image
62
+en mémoire centrale, initialisations des valeurs de pixel à 0.0,
63
+et pour conclure, enregistrement dans un fichier.
64
+
65
+\begin{verbatim}
66
+foo = fimg_create(&fimg, width, height, 3);
67
+if (foo) {
68
+        fprintf(stderr, "create floatimg -> %d\n", foo);
69
+        exit(1);
70
+        }
71
+fimg_clear(&fimg);
72
+foo = fimg_dump_to_file(&fimg, fname, 0);
73
+if (foo) {
74
+        fprintf(stderr, "dump fimg -> %d\n", foo);
75
+        exit(1);
76
+        }
77
+\end{verbatim}
78
+
79
+
80
+Une fois ce code enrobé dans un \texttt{main()}, compilé et exécuté,
81
+nous pouvons entrevoir, grâce au logiciel
82
+\texttt{fimgstats} (voir page \pageref{fimgstats}),
83
+le résultat sous forme de chiffres divers, et/ou inutiles~:
84
+
85
+\begin{verbatim}
86
+$ ./fimgstats quux.img 
87
+----------- numbers from 'quux.img' :
88
+  640    480   3  0x7f3718c4f010 0x7f3718d7b010 0x7f3718ea7010
89
+surface      307200
90
+mean values:
91
+      R         0.000000
92
+      G         0.000000
93
+      B         0.000000
94
+      A         0.000000
95
+max value     0.000000
96
+\end{verbatim}
97
+
98
+% -------------------------------------------------------------------
99
+\section{Mise en œuvre}
100
+
101
+Pour le moment, la procédure d'installation est un peu rude,
102
+pour ne pas dire clairement sommaire.
103
+\vspace{1em}
104
+
105
+Un script \texttt{build.sh} permet de construire approximativement 
106
+le bouzin. Il est loin d'être parfait.
107
+
108
+
35 109
 % -------------------------------------------------------------------
36 110
 \section{Les outils}
37 111
 
112
+\textsl{3615mavie} : sur des projets comme celui-ci, qui travaillent
113
+in-fine sur des objets que l'on peut considérer comme « physiques »,
114
+il est important de passer à une utilisation
115
+normale\footnote{Il y a une vie en dehors de git.} et construire
116
+des trucs qui mettent en action le code primitif.
117
+\vspace{1em}
118
+
119
+
120
+\subsection{mkfimg}\index{mkfimg}\label{mkfimg}
121
+
122
+Création d'un fichier contenant une image de teinte constante.
123
+
124
+\subsection{fimgstats}\index{fimgstats}\label{fimgstats}
125
+
126
+Affichage de quelques valeurs calculées à partir d'un fichier
127
+\texttt{.fimg}\index{.fimg}.
128
+
129
+% -------------------------------------------------------------------
130
+\section{Video for Linux}\index{v4l2}
131
+
132
+Donc, maintenant, nous savons un peu tripoter des images flottantes.
133
+Et nous devons nous poser une question fondamentale\footnote{primitive ?}
134
+sur la provenance de ces données prétendnat être des images.
135
+
136
+% -------------------------------------------------------------------
137
+\section{Et pour la suite ?}
138
+
38 139
 % -------------------------------------------------------------------
39 140
 
40 141
 \printindex

+ 1
- 0
lib/fimg-core.c View File

@@ -74,6 +74,7 @@ fprintf(stderr, ">>> %-25s ( %p %d %d %d )\n", __func__, fimg, w, h, t);
74 74
 if ( ! fimg_type_is_valid(t) ) {
75 75
 	return -2;
76 76
 	}
77
+
77 78
 memset(fimg, 0, sizeof(FloatImg));
78 79
 
79 80
 surface = w * h;

Loading…
Cancel
Save