# Documentation (Français)

##   Table des matières
 - [PistreamServer](#pistreamserver---class)
 - [createServer()](#createserver---function)
 - [createClient()](#createclient---function)
 - [StreamOptions](#streamoptions---interface)
 - [VideoOptions](#videooptions---interface)
 - [ImageEffects](#imageeffects---enum)
 - [Evènements WebSocket](#evènements-websocket)

## PiStreamServer - [classe]
### Champs
|Modificateur|  Nom | Type | Commentaire |
|--|--|--|--|
|static | log| winston.Logger | Logger static de PiStreamer. Vous pouvez le modifier en donnant un objet winston.Logger.
|private | buffer | Buffer | - |
|private | streamer?|child_process.ChildProcessWithoutNullStreams / null | - |
|private | readStream? | stream.Readable / null| - |
|private | wsServer | ws.Server | Instance de serveur WebSocket.|
|private |options|PiStreamer.StreamOptions|Options du stream, incluant les options vidéo ainsi que d'autres paramètres.|
|private readonly| defaultOptions| PiStreamer.StreamOptions| Valeurs par défaut du stream.|
### Fonctions
|Modificateur|  Nom | Paramètres | Valeur retournée | Commentaire |
|--|--|--|--|--|
|protected|stopFeed|-|void|Arrête le flux et tue le processus raspivid.|
|protected|startFeed|-|void|Initie le flux en créant un nouveau si il n'en existe pas ou en continuant celui qui est déjà présent.|
|protected|createFeed|-|void|Crée un nouveau flux en lançant un nouveau processus raspivid.|
|protected|boradcast|data: any|void|Diffuse le flux à tous les clients websocket connectés.|
|protected|newClient|socket: ws|void|Actions entreprises lors de la connection d'un nouveau client.|

### Méthodes
|Modificateur|  Nom | Paramètres | Valeur retournée |Commentaire |
|--|--|--|--|--|
|public|setOptions|options: PiStreamer.StreamOptions|void|Définit les options du stream.|

## createServer - [fonction]
Crée une nouvelle instance de PiStreamServer et retourne le serveur Http lié à ce dernier.
### Paramètres
- requestListener : *http.RequestListener* - Request listener.
- video? : PiStreamer.StreamOptions - Options du stream.
### Valeur retournée
- *http.Server*

## createClient - [fonction]
Copie le fichier client "http-live-player.js" dans le chemin donné.
### Paramètres
- path : *string* - Chemin du dossier cible.
### Valeur retournée
- *void*

## StreamOptions - [interface]
|Nom du champs| Type | Commentaire |
|--|--|--|
|videoOptions?|PiStreamer.VideoOptions|Options relative à la sortie vidéo.|
|dynamic?|boolean|Définit l'arrêt dynamique du stream. Si la valeur est vraie, le stream s'arrêtera s'il ne reste plus aucun spectateur.|
|limit?|int|Définit la limite de spectateur.|

## VideoOptions - [interface]
|Nom du champs| Type | Commentaire |
|--|--|--|
|height?|int|Hauteur de l'image.|
|width?|int|Largeur de l'image.|
|framerate?|int|Fréquence d'images de la vidéo.|
|hFlip?|boolean|Retourne horizontalement l'image si vrai.|
|vFlip?|boolean|Retourne verticalement l'image si vrai.|
|brightness?|int|Luminausité de la vidéo.|
|contrast?|int|Contraste de la vidéo.|
|sharpness?|int|Netteté de la vidéo.|
|saturation?|int|Saturation de la vidéo.|
|imxfx?|PiStreamer.ImageEffects|Effet appliqué à l'image.|

## ImageEffects - [enum]
Valeurs pouvant être utilisées pour appliquer un effet à l'image de la vidéo. Il se pourrait que quelques des effets ne fonctionnent pas, cela dépend entièrement de la version actuelle de raspivid.
### Valeurs: 
-   none: pas d'effet (par défaut)
-   negative: inverse les couleurs de l'image
-   solarise: solarise l'image
-   posterise: postérise l'image
-   whiteboard: effet tableau blanc
-   blackboard: effet tableau noir
-   sketch: effet dessin
-   denoise: débruite l'image
-   emboss: gaufre l'image
-   oilpaint: effet peinture à l'huile
-   hatch: effet d'esquisse de hachures
-   gpen: effet d'esquisse graphite
-   pastel: effet pastel
-   watercolour: effet peinture à l'eau
-   film: effet film à grain
-   blur: floute l'image
-   saturation: sature les couleurs de l'image
-   colourswap: pas complètement implémentée
-   washedout: pas complètement implémentée
-   colourpoint: pas complètement implémentée
-   colourbalance: pas complètement implémentée
-   cartoon: pas complètement implémentée

Source: [Raspivid documentation](https://www.raspberrypi.org/documentation/raspbian/applications/camera.md).

## Evènements WebSocket
Events inclus dans le serveur WebSocket de PiStreamer pour contrôler le flux vidéo.
### Valeurs:
 -  REQUESTSTREAM: Commence un stream s'il n'y en a pas déjà d'existant.
 -  STOPSTREAM: Arrête le stream en cours.
 -  clientPAUSESTREAM: Met en pause le stream pour le client ayant envoyé la requête (WIP).
 -  globalPAUSESTREAM: Met en pause le stream pour tous les clients connectés.
