Effets vidéo OpenGL - VisioForge Media Blocks SDK .Net¶
Les effets vidéo OpenGL dans VisioForge Media Blocks SDK .Net permettent une manipulation puissante et accélérée matériellement des flux vidéo. Chaque effet est livré comme MediaBlock autonome (par ex. GLBlurBlock, GLFlipBlock, GLAlphaBlock) et se chaîne entre GLUploadBlock côté entrée et GLDownloadBlock côté sortie. Ce guide couvre les effets disponibles, leurs paramètres de configuration et les autres types OpenGL associés.
Effet de base : GLBaseVideoEffect¶
Tous les effets vidéo OpenGL héritent de la classe GLBaseVideoEffect, qui fournit des propriétés et des événements communs.
| Propriété | Type | Description |
|---|---|---|
Name | string | Nom interne de l'effet (lecture seule). |
ID | GLVideoEffectID | Identifiant unique de l'effet (lecture seule). |
Index | int | Index de l'effet dans une chaîne. |
Événements :
OnUpdate: se produit lorsque les propriétés de l'effet doivent être mises à jour dans le pipeline. AppelezOnUpdateCall()pour le déclencher.
Effets vidéo disponibles¶
Cette section détaille les divers effets vidéo OpenGL utilisables. Chaque effet est un MediaBlock indépendant — instanciez directement le bloc (par ex. new GLBlurBlock(new GLBlurVideoEffect())) et connectez-le entre GLUploadBlock et GLDownloadBlock (ou entre d'autres blocs GL) dans votre pipeline.
Effet Alpha (GLAlphaVideoEffect)¶
Remplace une couleur sélectionnée par un canal alpha ou définit/ajuste le canal alpha existant.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
Alpha | double | 1.0 | Valeur du canal alpha. |
Angle | float | 20 | Taille du cube colorimétrique à modifier (rayon de sensibilité pour la correspondance des couleurs). |
BlackSensitivity | uint | 100 | Sensibilité aux couleurs sombres. |
Mode | GLAlphaVideoEffectMode | Set | Méthode utilisée pour la modification de l'alpha. |
NoiseLevel | float | 2 | Rayon de bruit (pixels à ignorer autour de la couleur correspondante). |
CustomColor | SKColor | SKColors.Green | Valeur de couleur personnalisée pour le mode chroma key Custom. |
WhiteSensitivity | uint | 100 | Sensibilité aux couleurs claires. |
Énumération associée : GLAlphaVideoEffectMode
Définit le mode de fonctionnement de l'effet vidéo Alpha.
| Valeur | Description |
|---|---|
Set | Définit/ajuste directement le canal alpha via la propriété Alpha. |
Green | Chroma key sur vert pur. |
Blue | Chroma key sur bleu pur. |
Custom | Chroma key sur la couleur spécifiée par CustomColor. |
Effet Blur (GLBlurVideoEffect)¶
Applique un effet de flou via une convolution séparable 9x9. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Bulge (GLBulgeVideoEffect)¶
Crée une distorsion en relief (bombement) sur la vidéo. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Color Balance (GLColorBalanceVideoEffect)¶
Ajuste la balance des couleurs de la vidéo, dont la luminosité, le contraste, la teinte et la saturation.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
Brightness | double | 0 | Ajuste la luminosité (-1.0 à 1.0, 0 ne change rien). |
Contrast | double | 1 | Ajuste le contraste (0.0 à l'infini, 1 ne change rien). |
Hue | double | 0 | Ajuste la teinte (-1.0 à 1.0, 0 ne change rien). |
Saturation | double | 1 | Ajuste la saturation (0.0 à l'infini, 1 ne change rien). |
Effet Deinterlace (GLDeinterlaceVideoEffect)¶
Applique un filtre de désentrelacement à la vidéo.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
Method | GLDeinterlaceMethod | VerticalBlur | Méthode de désentrelacement à utiliser. |
Énumération associée : GLDeinterlaceMethod
Définit la méthode de l'effet vidéo Deinterlace.
| Valeur | Description |
|---|---|
VerticalBlur | Méthode de flou vertical. |
MAAD | Motion Adaptive: Advanced Detection. |
Effet Fish Eye (GLFishEyeVideoEffect)¶
Applique un effet de distorsion d'objectif fisheye. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Flip (GLFlipVideoEffect)¶
Retourne ou fait pivoter la vidéo.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
Method | GLFlipVideoMethod | None | Méthode de retournement ou rotation à utiliser. |
Énumération associée : GLFlipVideoMethod
Définit la méthode de retournement ou de rotation vidéo.
| Valeur | Description |
|---|---|
None | Aucune rotation. |
Clockwise | Rotation horaire de 90 degrés. |
Rotate180 | Rotation de 180 degrés. |
CounterClockwise | Rotation antihoraire de 90 degrés. |
HorizontalFlip | Retournement horizontal. |
VerticalFlip | Retournement vertical. |
UpperLeftDiagonal | Retournement selon la diagonale haut-gauche/bas-droite. |
UpperRightDiagonal | Retournement selon la diagonale haut-droite/bas-gauche. |
Effet Glow Lighting (GLGlowLightingVideoEffect)¶
Ajoute un effet de halo lumineux à la vidéo. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Grayscale (GLGrayscaleVideoEffect)¶
Convertit la vidéo en niveaux de gris. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Heat (GLHeatVideoEffect)¶
Applique un effet de type signature thermique à la vidéo. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Laplacian (GLLaplacianVideoEffect)¶
Applique un filtre de détection d'arêtes laplacien.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
Invert | bool | false | Si true, inverse les couleurs pour obtenir des arêtes sombres sur fond clair. |
Effet Light Tunnel (GLLightTunnelVideoEffect)¶
Crée un effet visuel de tunnel lumineux. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Luma Cross Processing (GLLumaCrossProcessingVideoEffect)¶
Applique un effet de cross-processing de luminance (souvent « xpro »). Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Mirror (GLMirrorVideoEffect)¶
Applique un effet miroir à la vidéo. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Resize (GLResizeVideoEffect)¶
Redimensionne la vidéo aux dimensions spécifiées.
Propriétés :
| Propriété | Type | Description |
|---|---|---|
Width | int | Largeur cible du redimensionnement vidéo. |
Height | int | Hauteur cible du redimensionnement vidéo. |
Effet Sepia (GLSepiaVideoEffect)¶
Applique un effet de sépia à la vidéo. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Sin City (GLSinCityVideoEffect)¶
Applique un effet de style cinéma « Sin City » (niveaux de gris avec rehauts rouges). Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Sobel (GLSobelVideoEffect)¶
Applique un filtre de détection d'arêtes de Sobel.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
Invert | bool | false | Si true, inverse les couleurs pour obtenir des arêtes sombres sur fond clair. |
Effet Square (GLSquareVideoEffect)¶
Applique un effet de distorsion ou de pixellisation « carré ». Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Squeeze (GLSqueezeVideoEffect)¶
Applique un effet de distorsion par compression. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Stretch (GLStretchVideoEffect)¶
Applique un effet de distorsion par étirement. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet Transformation (GLTransformationVideoEffect)¶
Applique des transformations 3D à la vidéo : rotation, mise à l'échelle et translation.
Propriétés :
| Propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
FOV | float | 90.0f | Angle du champ de vision en degrés pour la projection perspective. |
Ortho | bool | false | Si true, utilise une projection orthographique ; sinon, perspective. |
PivotX | float | 0.0f | Coordonnée X du point pivot de rotation (0 = centre). |
PivotY | float | 0.0f | Coordonnée Y du point pivot de rotation (0 = centre). |
PivotZ | float | 0.0f | Coordonnée Z du point pivot de rotation (0 = centre). |
RotationX | float | 0.0f | Rotation autour de l'axe X en degrés. |
RotationY | float | 0.0f | Rotation autour de l'axe Y en degrés. |
RotationZ | float | 0.0f | Rotation autour de l'axe Z en degrés. |
ScaleX | float | 1.0f | Multiplicateur d'échelle sur l'axe X. |
ScaleY | float | 1.0f | Multiplicateur d'échelle sur l'axe Y. |
TranslationX | float | 0.0f | Translation sur l'axe X (coordonnées universelles [0-1]). |
TranslationY | float | 0.0f | Translation sur l'axe Y (coordonnées universelles [0-1]). |
TranslationZ | float | 0.0f | Translation sur l'axe Z (coordonnées universelles [0-1], profondeur). |
Effet Twirl (GLTwirlVideoEffect)¶
Applique un effet de distorsion par tourbillon. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Effet X-Ray (GLXRayVideoEffect)¶
Applique un effet visuel de type radiographie. Cet effet ne possède pas de propriétés configurables au-delà de celles héritées de GLBaseVideoEffect.
Identification des effets OpenGL : énumération GLVideoEffectID¶
Cette énumération liste tous les types d'effets vidéo OpenGL disponibles, utilisée par GLBaseVideoEffect.ID.
| Valeur | Description |
|---|---|
ColorBalance | Effet de balance des couleurs. |
Grayscale | Effet niveaux de gris. |
Resize | Effet de redimensionnement. |
Deinterlace | Effet de désentrelacement. |
Flip | Effet de retournement. |
Blur | Effet de flou avec convolution séparable 9x9. |
FishEye | Effet fisheye. |
GlowLighting | Effet de halo lumineux. |
Heat | Effet de signature thermique. |
LumaX | Effet de cross-processing de luminance. |
Mirror | Effet miroir. |
Sepia | Effet sépia. |
Square | Effet « square ». |
XRay | Effet radiographie. |
Stretch | Effet d'étirement. |
LightTunnel | Effet tunnel lumineux. |
Twirl | Effet tourbillon. |
Squeeze | Effet de compression. |
SinCity | Effet « Sin City » gris-rouge. |
Bulge | Effet bombement. |
Sobel | Effet Sobel. |
Laplacian | Effet laplacien. |
Alpha | Effet de canaux alpha. |
Transformation | Effet de transformation. |
Configuration du rendu et de la vue OpenGL¶
Ces types aident à configurer la manière dont la vidéo est rendue ou visualisée dans un contexte OpenGL, en particulier pour les scénarios spécialisés comme la VR ou les configurations d'affichage personnalisées.
Paramètres de vue équirectangulaire (GLEquirectangularViewSettings)¶
Gère les paramètres pour le rendu vidéo équirectangulaire (360 degrés), couramment utilisé dans les applications VR. Implémente IVRVideoControl.
Propriétés :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
VideoWidth | int | (lecture seule) | Largeur de la vidéo source. |
VideoHeight | int | (lecture seule) | Hauteur de la vidéo source. |
FieldOfView | float | 80.0f | Champ de vision en degrés. |
Yaw | float | 0.0f | Yaw (rotation autour de l'axe Y) en degrés. |
Pitch | float | 0.0f | Pitch (rotation autour de l'axe X) en degrés. |
Roll | float | 0.0f | Roll (rotation autour de l'axe Z) en degrés. |
Mode | VRMode | Equirectangular | Mode VR (prend en charge Equirectangular). |
Méthodes :
IsModeSupported(VRMode mode): vérifie si leVRModespécifié est pris en charge.
Événements :
SettingsChanged: se produit lorsqu'un paramètre de vue est modifié.
Paramètres du moteur de rendu vidéo (GLVideoRendererSettings)¶
Configure les propriétés générales d'un moteur de rendu vidéo OpenGL.
Propriétés :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
ForceAspectRatio | bool | true | Indique si la mise à l'échelle respecte le rapport d'aspect d'origine. |
IgnoreAlpha | bool | true | Indique si le canal alpha est ignoré (traité comme du noir). |
PixelAspectRatio | System.Tuple<int, int> | (0, 1) | Rapport d'aspect des pixels du périphérique d'affichage (numérateur, dénominateur). |
Rotation | GLVideoRendererRotateMethod | None | Rotation appliquée à la vidéo. |
Énumération associée : GLVideoRendererRotateMethod
Définit les méthodes de rotation pour le moteur de rendu vidéo OpenGL.
| Valeur | Description |
|---|---|
None | Aucune rotation. |
_90C | Rotation horaire de 90 degrés. |
_180 | Rotation de 180 degrés. |
_90CC | Rotation antihoraire de 90 degrés. |
FlipHorizontal | Retournement horizontal. |
FlipVertical | Retournement vertical. |
Shaders OpenGL personnalisés¶
Permet l'application de shaders GLSL personnalisés au flux vidéo.
Définition de shader (GLShader)¶
Représente une paire de shaders vertex et fragment.
Propriétés :
| Propriété | Type | Description |
|---|---|---|
VertexShader | string | Code source GLSL du shader de vertex. |
FragmentShader | string | Code source GLSL du shader de fragment. |
Constructeurs : - GLShader() - GLShader(string vertexShader, string fragmentShader)
Paramètres de shader (GLShaderSettings)¶
Configure des shaders GLSL personnalisés à utiliser dans le pipeline.
Propriétés :
| Propriété | Type | Description |
|---|---|---|
Vertex | string | Code source GLSL du shader de vertex. |
Fragment | string | Code source GLSL du shader de fragment. |
Uniforms | System.Collections.Generic.Dictionary<string, object> | Dictionnaire des variables uniformes (paramètres) à transmettre aux shaders. |
Constructeurs : - GLShaderSettings() - GLShaderSettings(string vertex, string fragment) - GLShaderSettings(GLShader shader)
Superpositions d'images en OpenGL¶
Fournit des paramètres pour superposer des images statiques sur un flux vidéo dans un contexte OpenGL.
Paramètres de superposition (GLOverlaySettings)¶
Définit les propriétés d'une superposition d'image.
Propriétés :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
Filename | string | (s.o.) | Chemin du fichier image (lecture seule après init). |
Data | byte[] | (s.o.) | Données image sous forme de tableau d'octets (lecture seule après init). |
X | int | Coordonnée X du coin supérieur gauche de la superposition. | |
Y | int | Coordonnée Y du coin supérieur gauche de la superposition. | |
Width | int | Largeur de la superposition. | |
Height | int | Hauteur de la superposition. | |
Alpha | double | 1.0 | Opacité de la superposition (0.0 transparent à 1.0 opaque). |
Constructeur : - GLOverlaySettings(string filename)
Mixage vidéo OpenGL¶
Ces types servent à configurer un mélangeur vidéo OpenGL, permettant de combiner et composer plusieurs flux vidéo.
Paramètres du mélangeur (GLVideoMixerSettings)¶
Étend VideoMixerBaseSettings pour le mixage vidéo spécifique à OpenGL. Gère une liste d'objets GLVideoMixerStream et hérite de propriétés telles que Width, Height et FrameRate.
Méthodes : - AddStream(GLVideoMixerStream stream) : ajoute un flux au mélangeur. - RemoveStream(GLVideoMixerStream stream) : retire un flux du mélangeur. - SetStream(int index, GLVideoMixerStream stream) : remplace un flux à un index spécifique.
Constructeurs : - GLVideoMixerSettings(int width, int height, VideoFrameRate frameRate) - GLVideoMixerSettings(int width, int height, VideoFrameRate frameRate, List<VideoMixerStream> streams)
Flux du mélangeur (GLVideoMixerStream)¶
Étend VideoMixerStream et définit les propriétés d'un flux individuel au sein du mélangeur vidéo OpenGL. Hérite de Rectangle, ZOrder et Alpha de VideoMixerStream.
Propriétés :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
Crop | Rect | (s.o.) | Rectangle de rognage du flux d'entrée. |
BlendConstantColorAlpha | double | 0 | Composante alpha pour la couleur de mélange constante. |
BlendConstantColorBlue | double | 0 | Composante bleue pour la couleur de mélange constante. |
BlendConstantColorGreen | double | 0 | Composante verte pour la couleur de mélange constante. |
BlendConstantColorRed | double | 0 | Composante rouge pour la couleur de mélange constante. |
BlendEquationAlpha | GLVideoMixerBlendEquation | Add | Équation de mélange pour le canal alpha. |
BlendEquationRGB | GLVideoMixerBlendEquation | Add | Équation de mélange pour les canaux RVB. |
BlendFunctionDestinationAlpha | GLVideoMixerBlendFunction | OneMinusSourceAlpha | Fonction de mélange pour l'alpha de destination. |
BlendFunctionDesctinationRGB | GLVideoMixerBlendFunction | OneMinusSourceAlpha | Fonction de mélange pour le RVB de destination. |
BlendFunctionSourceAlpha | GLVideoMixerBlendFunction | One | Fonction de mélange pour l'alpha source. |
BlendFunctionSourceRGB | GLVideoMixerBlendFunction | SourceAlpha | Fonction de mélange pour le RVB source. |
Constructeur : - GLVideoMixerStream(Rect rectangle, uint zorder, double alpha = 1.0)
Équation de mélange (énumération GLVideoMixerBlendEquation)¶
Spécifie la manière dont les couleurs source et destination sont combinées lors du mélange.
| Valeur | Description |
|---|---|
Add | Source + Destination |
Subtract | Source - Destination |
ReverseSubtract | Destination - Source |
Fonction de mélange (énumération GLVideoMixerBlendFunction)¶
Définit les facteurs pour les couleurs source et destination dans les opérations de mélange. (Rs, Gs, Bs, As sont les composantes de couleur source ; Rd, Gd, Bd, Ad sont celles de destination ; Rc, Gc, Bc, Ac sont les composantes de couleur constante).
| Valeur | Description |
|---|---|
Zero | Le facteur vaut (0, 0, 0, 0). |
One | Le facteur vaut (1, 1, 1, 1). |
SourceColor | Le facteur vaut (Rs, Gs, Bs, As). |
OneMinusSourceColor | Le facteur vaut (1-Rs, 1-Gs, 1-Bs, 1-As). |
DestinationColor | Le facteur vaut (Rd, Gd, Bd, Ad). |
OneMinusDestinationColor | Le facteur vaut (1-Rd, 1-Gd, 1-Bd, 1-Ad). |
SourceAlpha | Le facteur vaut (As, As, As, As). |
OneMinusSourceAlpha | Le facteur vaut (1-As, 1-As, 1-As, 1-As). |
DestinationAlpha | Le facteur vaut (Ad, Ad, Ad, Ad). |
OneMinusDestinationAlpha | Le facteur vaut (1-Ad, 1-Ad, 1-Ad, 1-Ad). |
ConstantColor | Le facteur vaut (Rc, Gc, Bc, Ac). |
OneMinusContantColor | Le facteur vaut (1-Rc, 1-Gc, 1-Bc, 1-Ac). |
ConstantAlpha | Le facteur vaut (Ac, Ac, Ac, Ac). |
OneMinusContantAlpha | Le facteur vaut (1-Ac, 1-Ac, 1-Ac, 1-Ac). |
SourceAlphaSaturate | Le facteur vaut (min(As, 1-Ad), min(As, 1-Ad), min(As, 1-Ad), 1). |
Sources de test virtuelles pour OpenGL¶
Ces classes de paramètres servent à configurer des sources virtuelles générant des motifs de test directement dans un contexte OpenGL.
Paramètres de source vidéo virtuelle (GLVirtualVideoSourceSettings)¶
Configure un bloc source (GLVirtualVideoSourceBlock) produisant des données vidéo de test. Implémente IMediaPlayerBaseSourceSettings et IVideoCaptureBaseVideoSourceSettings.
Propriétés :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
Width | int | 1280 | Largeur de la vidéo de sortie. |
Height | int | 720 | Hauteur de la vidéo de sortie. |
FrameRate | VideoFrameRate | 30/1 (30 i/s) | Fréquence d'images de la vidéo de sortie. |
IsLive | bool | true | Indique si la source est en direct. |
Mode | GLVirtualVideoSourceMode | (s.o. - doit être défini) | Type de motif de test à générer. |
Énumération associée : GLVirtualVideoSourceMode
Définit le motif de test généré par GLVirtualVideoSourceBlock.
| Valeur | Description |
|---|---|
SMPTE | Mires de couleurs SMPTE 100 %. |
Snow | Aléatoire (neige télévisuelle). |
Black | Noir à 100 %. |
White | Blanc à 100 %. |
Red | Rouge uni. |
Green | Vert uni. |
Blue | Bleu uni. |
Checkers1 | Damier (1 px). |
Checkers2 | Damier (2 px). |
Checkers4 | Damier (4 px). |
Checkers8 | Damier (8 px). |
Circular | Motif circulaire. |
Blink | Motif clignotant. |
Mandelbrot | Fractale de Mandelbrot. |
Méthodes : - Task<MediaFileInfo> ReadInfoAsync() : lit asynchrone les informations multimédias (renvoie des informations synthétiques d'après les paramètres). - MediaBlock CreateBlock() : crée une instance GLVirtualVideoSourceBlock configurée avec ces paramètres.