Compare commits
No commits in common. "fd3a4b83364aea336c1c07f7bb7c7a5de7760d02" and "e9acd130ea40172dc421bd5d552348753daff1ef" have entirely different histories.
fd3a4b8336
...
e9acd130ea
@ -438,13 +438,6 @@ XXX il y a encore beaucoup à dire, et de quoi bien rire \textsl{:)}
|
|||||||
|
|
||||||
\subsection{Pointeurs et chaines}
|
\subsection{Pointeurs et chaines}
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
char *text = "this is a text";
|
|
||||||
char text[] = "this is a text";
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Vous le voyez, le piège ?
|
|
||||||
|
|
||||||
\subsection{Pointeurs et fonctions}
|
\subsection{Pointeurs et fonctions}
|
||||||
|
|
||||||
Exemple classique : qsort.
|
Exemple classique : qsort.
|
||||||
|
@ -97,7 +97,7 @@ WIP...\index{XXX}
|
|||||||
|
|
||||||
Beaucoup d'autres logiciels peuvent être controlés par OSC, ou
|
Beaucoup d'autres logiciels peuvent être controlés par OSC, ou
|
||||||
générer des trames OSC : on peut citer
|
générer des trames OSC : on peut citer
|
||||||
Processing\index{processing},
|
Processing\index{Processing},
|
||||||
Chuck\index{Chuck} (page \pageref{chuck-osc}),
|
Chuck\index{Chuck} (page \pageref{chuck-osc}),
|
||||||
\dots
|
\dots
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ image.
|
|||||||
\textsl{Video For Linux, second edition.}
|
\textsl{Video For Linux, second edition.}
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
tth@delirium:~$ v4l2-ctl --list-formats-ext
|
tth@delirium:~/Essais/Fonderie$ v4l2-ctl --list-formats-ext
|
||||||
ioctl: VIDIOC_ENUM_FMT
|
ioctl: VIDIOC_ENUM_FMT
|
||||||
Type: Video Capture
|
Type: Video Capture
|
||||||
|
|
||||||
@ -38,42 +38,8 @@ ioctl: VIDIOC_ENUM_FMT
|
|||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Question : quelle méthode utiliser pour avoir la même chose avec
|
Question : quelle méthode utiliser pour avoir la même chose avec
|
||||||
des lignes de code écrites en C ?
|
des lignes de code écrites en C ? Il faut passer par une suite d'appels
|
||||||
Il faut certainement passer par une suite d'appels
|
\texttt{ioctl}\index{ioctl}.
|
||||||
\texttt{ioctl}\index{ioctl} après ouverture du device,
|
|
||||||
mais la documentation est difficile à \textsl{greper}.
|
|
||||||
|
|
||||||
% --------------------------------------------------------------------
|
|
||||||
|
|
||||||
\section{GameBoy camera}
|
|
||||||
|
|
||||||
%
|
|
||||||
% trouvé dans pleroma
|
|
||||||
%
|
|
||||||
|
|
||||||
Voilà (désolé dur de faire moins technique en 500 charactères):
|
|
||||||
|
|
||||||
\texttt{sudo modprobe v4l2loopback exclusive\_caps\=1 video\_nr\=7 %
|
|
||||||
card\_label="WebcamVirtuelle"}
|
|
||||||
|
|
||||||
On créé un périphérique de caméra virtuelle sur /dev/video7
|
|
||||||
|
|
||||||
\texttt{ffmpeg -video\_size 352x288 -i /dev/video0 -i ./palette.png
|
|
||||||
-lavfi fps=10,scale=w=128:h=112,paletteuse=dither=bayer,format=yuyv422
|
|
||||||
-f v4l2 /dev/video7}
|
|
||||||
|
|
||||||
On fait une chaîne ffmpeg de la webcam réelle vers la virtuelle,
|
|
||||||
en redimensionnant en 128x112 1/2
|
|
||||||
|
|
||||||
puis en appliquant un algorithme de dithering et une palette de
|
|
||||||
couleurs (juste un PNG carré avec les différentes couleurs à utiliser
|
|
||||||
pour le dithering, je peux le fournir si besoin).
|
|
||||||
Enfin on force un format pour la webcam de destination et on sort
|
|
||||||
sur son fichier (/dev/video7 comme défini tout à l'heure).
|
|
||||||
|
|
||||||
C'est pas propre (et il faudrait que je change d'algorithme pour le
|
|
||||||
scaling parce qu'il y a un effet de flou désagréable), MAIS ça
|
|
||||||
fonctionne et le rendu ressemble.
|
|
||||||
|
|
||||||
% --------------------------------------------------------------------
|
% --------------------------------------------------------------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user